我使用环回作为后端构建应用程序,使用myjql作为数据库选择将angularjs作为前端。 Loopback版本为2.22.0,Loopback angular sdk版本为1.5.0
有模特Person和Post。两者都有自动生成的" id"环回字段(即"idInjection": true
)。
它们都是相关的Person
hasMany Post
和Post
belongsTo Person
由personId
模型Post
列上的外键链接
假设两个表中都有一些记录。
我使用lb-ng命令生成了lbServices.js文件。 所以现在我尝试使用函数
Person.posts.create({
content: "Some content",
id: $rootScope.currentUser.id
})
它给了我重复输入的错误。
我对此进行了调查,发现它是因为lbServices.js文件中的其余api url "/People/:id/posts"
有一个id参数,而且Post模型也有一个id列,它是一个主键。
所以它将id传递给他们两个并失败。形成了歧义。
对于此示例,$rootScope.currentUser.id=1
并且Post
表中已存在id=1
现在,当我更改Post
模型的属性("idInjection": false
)并创建自定义主键列时," uid"使用auto_increment。
我能够插入
Person.posts.create({
content: "Some content",
id: $rootScope.currentUser.id
})
所以我想知道我是否以正确的方式插入相关模型,或者这是环回的一些问题?或者是否有更好的方法从AngularJs前端插入?
我真的想避免将每个模型的主要列名更改为" id"。
请帮忙。
答案 0 :(得分:2)
我弄清楚我做错了什么。 插入的正确方法应该是:
Person.posts.create(
{id: $rootScope.currentUser.id},
{
content: "Some content",
title: "Some title"
})
答案 1 :(得分:0)
由于id字段是自动生成的号码,因此您的呼叫应为:
Person.posts.create({
content: "Some content",
personId: $rootScope.currentUser.id
})