我是stradi的新手,并且通常是后端开发人员,我想了解很小的事情应该如何工作。
我有一个用户模型,一个个人资料模型和一个票价模型。
用户可以拥有个人资料,因此我创建了一个关系has and belongs to one
。
个人资料可以包含票价,而我在个人资料和票价之间创建了相同的关系。
我在这里注意到的是:
在客户端中,我进入个人资料部分时,会使用所有属性(例如名称,姓氏,地址等)进行保存。 通过向其中添加用户ID,一切都会好起来。
这里的要点是,在同一个人资料部分中,我也有票价输入,我想做的是通过保存个人资料而不是仅为票价添加特殊的保存按钮来节省票价...
在这里有可能做些什么吗?还是我做错了什么?
我正在按配置文件划分票价,以便能够更好地查找,组织和使用票价,而无需每次都查询配置文件,而是通过ID ro来获取配置文件记录……
有人可以清楚地解释最佳方法吗?我应该怎么做才能正确实现它?谢谢
答案 0 :(得分:2)
Form
HTML输入以创建nested json data 您可以构建一个表单,然后test the output
<form action="profiles" method="POST" accept-charset="utf-8">
<input type="text" name="name" value="MyProfileName" />
<input type="text" name="fare[name]" value="MyProfileFareName" />
</form>
parameters
参数将从您的后端接收为
name=MyProfileName&fare[name]=MyProfileFareName
控制器会将以上参数解析为json
{
'profile' => {
'name' => 'MyProfileName',
'fare' => {
'name' => 'MyProfileFareName',
}
}
}
create
或update
的动作控制器应负责使用接收到的参数并更新数据库模型。将add
保留在edit
中的model
和database
方法是在service
对象(不是控制器内部)中定义的,控制器的职责是只是为了调用这些方法。
您可以从parameters
的{{1}}中检索body
。 request
对象在控制器ctx.request
内可用
作为request
动作in this example的uses the .add
method from the category
services class。 api docs没有对此的解释,您应该遵循the example on github。
create
module.exports = {
// POST /profiles
create: async (ctx) => {
// use the fare service to add a new entry with value request.body.fare
var profile = strapi.services.profile.add(ctx.request.body)
strapi.services.fare.add(ctx.request.body.fare)
return profile
}
};
服务Profile
和add
方法您可以查看github上的示例,以更好地了解edit
和add
方法的逻辑。
edit