Strapi:如何创建属于用户的新模型?

Strapi: how to create a new model that belongs to a user?

我刚刚开始使用 Strapi.io,目前我正在开发一个虚拟项目来测试它。请注意,因为我使用的是 UI,所以我没有任何代码可以分享,但我会尽可能明确地描述我想要的和我尝试过的。

我创建了一个“待办事项”collection 类型,它具有标题、描述、类别和与之关联的用户。用户是与使用 Strapi 应用程序创建的默认用户实体的关系(一个用户有很多待办事项)。当我 运行 http POST http://localhost:1337/todos "Authorization: Bearer <TOKEN>" title="title" description="description" category="category"(我正在用 Postman 做)时它起作用了,但我看到 user 字段是 null。我希望根据发布此命令的用户自动分配它。有可能实现吗?

非常感谢!

是的,这绝对有可能。您这样做的方法是,您首先确定哪个用户实际发出了这个请求。这可以通过访问 ctx.state.user 变量来完成。这是由 Koa 设置的全局变量,因此您可以在控制器中访问它。现在要保存用户与 todo 集合条目的关系,您只需传递调用此 api 的用户的用户 ID。这可以通过使用 ctx.state.user.id 来检索。所以你可以使用下面的代码来正确创建todo集合:

示例代码:
await strapi.services.todo.create({
   title: 'My Todo Title',
   description: 'My Description here',
   category: 'Work',
   user: ctx.state.user.id
})

P.S:您需要确保您已登录并使用bearer token在调用 api 时,否则 ctx.state.user 将为 null.