你如何通过 id 以外的东西在存储库中找到一个项目

How do you find an item in a repository by something other than id

如果我有一个包含许多属性的存储库,并且我想通过非 ID 属性 查找某些内容,我是先查找所有内容,然后再 return 布尔比较后的数据,还是有没有更好的方法通过 属性 找到不是 ID 的东西?

对于环回 3,您可以在此处找到查询数据的文档:https://loopback.io/doc/en/lb3/Querying-data.html

基本上,使用这样的查询过滤器:

const objects = await app.models.ModelName.find(
  {
    where: {
      propertyName: value
    }
  }
)

不要忘记为要查询的 属性 定义索引,否则数据库引擎将执行完整的 table 扫描。

"properties": {
  "propertyName": {
    "type": "string",
    "index": {
      "unique": true
    }
  },
  ...
}

在 loopback4 中,您需要为此使用存储库。如下操作。

如果您知道只有一个条目具有值。 (唯一列)

const user = await this.userRepository.findOne({
  where: {
    username: 'test_admin'
  }
});

对于可以有多个的情况。

const user = await this.userRepository.find({
  where: {
    firstName: 'test admin'
  }
});