1
我正试图找到一种有效的方式来检索遍布多个模型的结果。在我的例子,我有三个型号:使用Sails.js水线的几个模型的高效查询
Video
存储的视频数据包括存储视频User
的创建者用户数据Follower
其中哪些用户跟随卖场其他用户
我的模型的简化版本如下所示:
// Video.js
module.exports = {
attributes: {
title: {
type: 'string'
},
creator: {
model: 'User'
}
}
};
// User.js
module.exports = {
attributes: {
user_name: {
type: 'string'
}
}
};
// Follower.js
module.exports = {
attributes: {
user: {
model: 'User'
},
follower: {
model: 'User'
}
}
};
我意识到我可以直接将User
作为User
存储多对多关联,但我也会将其他值存储在一起,例如用户开始关注另一个用户以及从哪个目的地开始时。此外,我存储了大量类似的数据,我希望保持像Video
和User
这样的核心模型的精益。
因此,现在我试图获取10个最新的视频(创建日期时间存储在由水线自动添加的createdAt
属性中),这是由给定用户遵循的用户创建的。
从这个给定的用户(我们称他为queryingUser
)开始,我试图获得他关注的所有用户,并将它们用作搜索视频的输入。我想调用这个样子:
Follower.find({where: {follower: queryingUser} , select: ['user']}).exec(function (err, users){
var userArray = [];
for (var i=0; i< users.length; i++) userArray.push(users[i].user);
Video.find({ where: {creator: userArray}, limit: 10, sort: 'createdAt DESC' }).exec(function (err, videos){
// videos should contain the desired result
});
});
我根据waterline docs这样的调用应该努力思考,但是,它似乎并没有取得任何结果。
我做错了什么?有没有一种不同的方法能以有效的方式达到预期的效果?