2017-05-13 140 views
0

我知道,在船帆我可以用填充连接两个模型,如在这个环节Sails model and orm 例如描述我有2个型号:如何使用连接到连接两个表中帆

// myApp/api/models/Pet.js 
module.exports = { 
    attributes: { 
    name: { 
     type: 'string' 
    }, 
    color: { 
     type: 'string' 
    } 
    } 
} 

// myApp/api/models/User.js 
module.exports = { 
    attributes: { 
    name: { 
     type: 'string' 
    }, 
    age: { 
     type: 'integer' 
    }, 
    pony:{ 
     model: 'pet' 
    } 
    } 
} 

然后

User.find({ name:'Mike' }) 
.populate('pony') 
.exec(function(err, users) {} 

将返回结果的东西像

[{ 
    name: 'Mike', 
    age: 21, 
    pony: { 
    name: 'Pinkie Pie', 
    color: 'pink', 
    id: 5, 
    createdAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST), 
    updatedAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST) 
    }, 
    createdAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST), 
    updatedAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST), 
    id: 1 
}] 
在这里 小马

是一个对象,我不喜欢这样。我想要返回这样的事情:

[{ 
    name: 'Mike', 
    age: 21, 
    name: 'Pinkie Pie', 
    color: 'pink', 
    id: 5, 
    createdAt: Tue Feb 11 2014 15:45:33 GMT - 0600 (CST), 
    updatedAt: Tue Feb 11 2014 15:45:33 GMT - 0600 (CST) 
    createdAt: Tue Feb 11 2014 15:48:53 GMT - 0600 (CST), 
    updatedAt: Tue Feb 11 2014 15:48:53 GMT - 0600 (CST), 
    id: 1 
}] 

(所有这些都是属性)。所以我认为我需要加入这种情况。我怎么能加入?

+0

您的预期结果对象具有重复键。这应该是一个JS对象或JSON? – Sangharsh

+0

@Sangharsh我会在加入时重命名 – Tuan

回答

2

此问题已经涵盖here。答案显示在Sails for NoSQL DB中使用.populate(),在SQL DB中使用.query()。

如果您使用的是像MySQL这样的SQL数据库,并且这是一个频繁运行的查询,那么还有一个选项是在数据库级别创建一个视图。您可以在MySql Documentation中找到有关创建视图的更多信息。

+0

我认为我会创建视图然后 – Tuan

+0

是的,这是一个很好的选择,那么您可以在数据库视图的sails中创建模型,并且不再嵌套JSON。 – Glen