使用 mswjs/data 模拟工厂中的项目时如何在创建时呈现当前索引?

How to render current index on creation when mocking items in a factory using mswjs/data?

我正在使用 @mswjs/data 生成模拟数据库,并且我有一个 属性 order,它是所有条目的 0 和 length - 1 之间的数字。我想在 属性 中呈现当前索引。我正在查看 GitHub 存储库、Google 和 Whosebug,但找不到。

那么如何在模拟条目时呈现当前索引?

只对创建有影响,之后 属性 会随着项目的移动而发生变异。

否则,它也可以只是一个介于 0 和条目的最后一个索引之间的随机数,而不是当前索引,但它必须是唯一的并且不能在其他条目之间共享。

答案比我预期的要简单。

const countUp = (() => {
  let id = 0;
  return () => id++;
})();

然后在工厂

const myEntityFactory = () => {
  return {
    order: countUp,
  }
};

并在创建新实体时进行计数。

查询实体时考虑使用 sort 选项对前端的输出进行排序。

const db = factory({
  user: {
    id: primaryKey(Number)
  }
})

db.user.findMany({
  // Sort by the "id" property on the "user".
  sort: {
    id: 'asc'
  }
})

The sort criterion doesn't have to be the primary key, it can be any key. Yet since order seems to be a vital part of your model, I say it should be described in it (you can even use a designated property order, that'll also work.

虽然它的行为与创建实体时的默认排序方式类似,但您不再受限于库的内部实现细节,而是明确定义返回的实体必须如何排序每个操作的基础。