将多个项目与单个REST调用关联

时间:2016-06-27 08:24:52

标签: loopbackjs

我正在使用Loopback框架,并且拥有与modelB处于多对多关系的modelA。 我想知道是否可以将modelB中的多个项目与modelA相关联。 目前有一种方法可以将一个项目与此调用相关联:

FB.api( '/' + id + '/private_replies', 'post', 

    { message: message, access_token: token }, function(res) {}
);

有没有办法在批量操作中执行此操作?

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我认为你可以通过过滤器来做到这一点。 ModelA有很多modelBs,让我假设关系名称是'modelBs'

modelA.find({
    where: [your filter option on model A]
    include: {
        relation: 'modelBs',
        scope: {
            [your filters on model B]
        }
    }
})

以宁静的方式:

/modelAs?filter[include]=modelBs&filter[where]....

官方文档可能有所帮助:https://docs.strongloop.com/display/public/LB/Querying+data

答案 1 :(得分:0)

似乎是HasManyThrough model

我相信您的模型名称以小写字母开头,但理想情况下应该是ModelAModelB,然后可以将其实例保存在modelAmodelB变量中。

要使用add方法,您需要先使用ModelA找到ModelA.findById的实例,然后将其保存在modelA变量中,然后使用以下内容代码:

modelA.modelBs.add(modelBFieldsObject, function(err, patient) {
  ...
});

其中modelBs应该是ModalA.json文件中的关系名称,如

"relations": {
    "modelBs": {
      "type": "hasMany",
      "model": "ModelB",
      "foreignKey": "modelAId",
      "through": "ModelAModelB",
      "keyThrough": "modelBId"
    }
    ...

我认为应该允许传递modelBFieldsObject数组来创建多个实例,如

modelA.modelBs.add([modelBFieldsObject, modelBFieldsObject], function(err, patient) {
  ...
});

提示:为清楚起见,请以camelCase格式为大写字母及其实例变量命名模型。

参考文献: Methods added to the model