Loopback无法通过lbServices函数将记录插入相关模型

时间:2015-10-12 21:23:11

标签: angularjs node.js loopbackjs strongloop

我使用环回作为后端构建应用程序,使用myjql作为数据库选择将angularjs作为前端。 Loopback版本为2.22.0,Loopback angular sdk版本为1.5.0

有模特Person和Post。两者都有自动生成的" id"环回字段(即"idInjection": true)。

它们都是相关的Person hasMany PostPost belongsTo PersonpersonId模型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"。

请帮忙。

2 个答案:

答案 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
})