gpt4 book ai didi

node.js - 使用 Sails.js Waterline 跨多个模型进行高效查询

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:38 25 4
gpt4 key购买 nike

我正在尝试找到一种有效的方法来检索分布在多个模型中的结果。在我的示例中,我有三个模型:

  • 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'
}
}
};

我意识到我可以将多对多关联作为 Collection 直接存储在 User 中,但我还存储其他值,例如用户何时启动关注另一位用户以及他从哪个目的地进行关注。此外,我存储了大量类似的数据,我希望保持核心模型(例如 VideoUser)的精简。

所以现在我正在尝试获取由给定用户关注的用户创建的 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像这样的调用应该可以工作,但是,它似乎没有检索到任何结果。

我做错了什么吗?是否有不同的方法可以有效地达到预期的结果?

最佳答案

没关系,它确实有效。我在代码中的其他地方犯了一个错误,但是在修复它之后,我的示例就可以工作了。也许对其他人仍然有帮助。

关于node.js - 使用 Sails.js Waterline 跨多个模型进行高效查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com