lowdb - 如何查询多条记录?

lowdb - how to query multiple records?

我正在使用 https://github.com/typicode/lowdb 进行一个小项目。我需要一个搜索多条记录的查询,returns 它找到的每条记录都是一个数组。

例如,对于这样的数据库:

  "records": [
    {
      "id": "sadohfdsf",
      "username": "user1",
      "data": "abc"
    },
    {
      "id": "tiyuykuy",
      "username": "user1",
      "data": "xyz"
    },
    {
      "id": "tryehhrt",
      "username": "user2",
      "data": "tyu"
    }
  ]

我想查询 username: "user1" 的所有记录,并在数组中获取该用户的所有记录。

我试过默认值:

const user = await db.get('records')
.find({ username: "user1" })
.value();

return user;

但它只能找到数据库中的第一条记录。

在lowdb中查找多条记录的正确方法是什么?

NOTE: I don't use LowDB

根据文档判断,我认为在 LowDB 中不可能找到多条记录。相反,您可以使用 Array#filter 方法。

// Assuming the following returns an array of your object
const users = await db.get('records')
    .value();

// We can `filter` the user(s)
const result = users.filter(
    user => user.username === 'user1' /* or any other username */
);

使用过滤器而不是查找。

const users = await db('records').filter({ username: "user1" });

参考:https://github.com/typicode/lowdb/issues/185

多个过滤器意味着也使用 chain()