了解地带关系如何运作

时间:2019-05-10 17:19:24

标签: javascript node.js mongodb strapi

我是stradi的新手,并且通常是后端开发人员,我想了解很小的事情应该如何工作。

我有一个用户模型,一个个人资料模型和一个票价模型。

用户可以拥有个人资料,因此我创建了一个关系has and belongs to one。 个人资料可以包含票价,而我在个人资料和票价之间创建了相同的关系。

我在这里注意到的是:

在客户端中,我进入个人资料部分时,会使用所有属性(例如名称,姓氏,地址等)进行保存。 通过向其中添加用户ID,一切都会好起来。

这里的要点是,在同一个人资料部分中,我也有票价输入,我想做的是通过保存个人资料而不是仅为票价添加特殊的保存按钮来节省票价...

在这里有可能做些什么吗?还是我做错了什么?

我正在按配置文件划分票价,以便能够更好地查找,组织和使用票价,而无需每次都查询配置文件,而是通过ID ro来获取配置文件记录……

有人可以清楚地解释最佳方法吗?我应该怎么做才能正确实现它?谢谢

1 个答案:

答案 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',
    }
  }
}

控制器createupdate的动作

控制器应负责使用接收到的参数并更新数据库模型。将add保留在edit中的modeldatabase方法是在service对象(不是控制器内部)中定义的,控制器的职责是只是为了调用这些方法。

您可以从parameters的{​​{1}}中检索bodyrequest对象在控制器ctx.request内可用

作为request动作in this exampleuses the .add method from the category services classapi 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 } }; 服务Profileadd方法

您可以查看github上的示例,以更好地了解editadd方法的逻辑。

edit