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.
我刚刚开始使用 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.