sails.js来自数据库中多个表的水线查询结果

时间:2016-09-27 09:14:33

标签: javascript database post controller sails.js

我有一个包含两个表的数据库:' GroupTable' &安培; ' ItemTable&#39 ;. GroupTable存储组信息,例如组名等。项目表存储项目信息以及它们属于哪个组。事情就是这样,我不会因某些原因而使用外键,我不会解释 GroupTable:id,name,code
ItemTable:id,name,code,group

ItemTable还存储组,按组=' -1'区分。所以我做的是:使用' group = -1'查找ItemTable中的所有项目,获取所有项目的代码,然后过滤GroupTable并查找包含结果代码的所有组。因为我需要ItemTable中的那些组的组名。

var grp = -1;
$.post("ItemTable/getItems", {group:grp}, function(result){
  if(!result.error){
    var count = result.data.length;
    var data = result.data
    var codes = new Array;
    for (var i=0; i<count; i++) {
      groups.push(data[i].code);
    }
    $.post("GroupTable/getItem", {code:codes}, function(result2) {
      if (!result2.error){
        var grpCount = result2.data.length;
        var grpData = result2.data;
        for (var i=0; i<grpCount; i++){
          var name = grpData[i].name;
          //DO SOMETHING WITH THE NAME HERE
        }
      }
    }
  }
}

无论如何我只使用一个帖子就可以达到相同的效果吗?或者我错误地看着这个,我应该在我的控制器中编辑我的getItems函数呢?目前我正在使用&#39; TableItem.find(queryItem).exec()&#39;,我应该如何编写我的代码以适应我想要实现的目标?
是的,我们假设由于某种原因我不能使用外键,而且我的代码将确保代码&#39;在GroupTable中是独一无二的。

编辑: 我无法复制和粘贴,因为我在离线环境中工作。我使用的是MVC模型,上面的代码是我查看的代码。至于功能&#39; getItems&#39;在我的控制器中,这是我的控制器中的代码(总结为我必须输入它)

getItems: function(req, res){
 var id, name;
 (typeof(req.params.id) === 'undefined') ? id=req.body.id : id=req.params.id;
 (typeof(req.params.name) === 'undefined') ? name=req.body.name : name=req.params.name;

var queryItem = {
  id: id,
  name: name
};
// there is more than just id and name, as i did not type everything out
for (var propertyName in queryItem) {
 if (queryItem[propertyName] == null){
  delete queryItem[propertyName];
 }
}

ItemTable.find(queryItem).exec(function(err, items){
 if (err)
  red.json({"error":err, data:null});
 else
  res.json({"error":null, data: items});
});

0 个答案:

没有答案