我有一个包含两个表的数据库:' 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});
});