我最近开始研究sailsJs并且不了解细微之处 请向我解释一下SailsJs中的填充内容,以及谁可以做一个简单的例子 提前致谢 ? 什么是?
User.find({ name: 'foo' })
.populate('pets', { name: 'fluffy' })
.exec(function(err, users) {
if(err) return res.serverError(err);
res.json(users);
});
答案 0 :(得分:4)
populate用于关联。当你的模型是这样的:
// User.js
module.exports = {
attributes: {
name: {
type: "string"
},
pet: {
model: "pet"
}
}
}
这里用户集合的pet属性是对宠物表的引用。在用户表中,它将仅存储pet的id列。但是,当您在查找时执行填充时,它将获取宠物条目的整个记录并在此处显示。这只适用于一对一的关联。您可以拥有多对一的关联以及多对多关联。有关详细信息,请参阅此documentation
答案 1 :(得分:0)
sailsjs项目使用wateline ORM。你可以看到文件。如果要使用'populate()',则需要在模型中定义关联。
populate与关联一起使用,以包括模型定义中指定的任何相关值。如果集合属性是在多对多,一对多或多对多关联中定义的,则populate选项也接受完整的条件对象。这允许您过滤关联并运行限制并跳过结果。
例如,你需要这样做:
// A user may have many pets
var User = Waterline.Collection.extend({
identity: 'user',
connection: 'local-postgresql',
attributes: {
firstName: 'string',
lastName: 'string',
// Add a reference to Pets
pets: {
collection: 'pet',
via: 'owner'
}
}
});
// A pet may only belong to a single user
var Pet = Waterline.Collection.extend({
identity: 'pet',
connection: 'local-postgresql',
attributes: {
breed: 'string',
type: 'string',
name: 'string',
// Add a reference to User
owner: {
model: 'user'
}
}
});
您可以准备好文档,并且可以非常轻松地使用它
答案 2 :(得分:0)
要恢复 .populate()(由水线使用),SQL会使用 join 。
.populate()允许您加入数据库中的表。 链接标识符将在您的模型中定义。
换句话说,要将用户(位于&#34; User&#34;表中)与狗(位于&#34; Dog&#34;表中)相关联,请使用填充。< / p>
恢复你的榜样:
您正在寻找user =&gt; User.find({name:my_user})
你正在寻找名为&#34;蓬松&#34; =&GT; {name:&#39;蓬松&#39;}
你正在寻找那种“蓬松”的狗。与您的用户相关联(所属)=&gt; 填充(&#39;宠物&#39;)
哪个给:
User.find({ name: 'foo' })
.populate('pets', { name: 'fluffy' })
.exec(function(err, users) {
if(err) return res.serverError(err);
res.json(users);
}
此关联(&#34; pets&#34;),您可以在模型中定义它&#34;用户&#34;和#34;宠物&#34;就像上面的例子一样。
答案 3 :(得分:-5)
Populate是关于显示其被重新提交的(id)内容的全部内容
"abc": [{
type: ObjectId,
ref: "xyz"
}],