【发布时间】:2015-12-06 22:13:34
【问题描述】:
我正在处理按集合属性过滤对象的 Waterline 查询。在这个简化的例子中,我有两个模型,Video 和 Category:
// Video.js
module.exports = {
attributes: {
title: {
type: 'string'
},
categories: {
collection: 'Category',
via: 'videos'
}
}
};
// Category.js
module.exports = {
attributes: {
name: {
type: 'string'
},
videos: {
collection: 'Video',
via 'categories'
}
}
};
我想查找与某个类别相关的所有视频。我将类别 ID 存储在一个名为 categoryID 的变量中,并且正在尝试此查询:
Video.find('categories': categoryID).exec(function (err, videos) {
// videos should contain all videos associated with the categoryID
});
但是,即使有与我正在查找的类别相关联的视频,我也总是得到一个空结果。我知道 waterline 目前不支持对集合属性中的值进行深度查询,但我认为至少查询对象的 id 是可行的。我错了吗?
如果是这样,是否有其他方法可以在不使用本机查询的情况下实现所需结果?
我知道我可以向Category 添加一个集合属性,并从Category 端构建我的查询。然而,这只是更复杂搜索的开始,我还使用存储在Video 对象中的其他属性来缩小结果范围,例如视频创建者的用户 ID。最后,我使用分页遍历视频结果。因此,我正在寻找一种方法来检索特定类别的视频,该视频可以与存储在 Video 对象中的其他搜索属性相结合。
【问题讨论】:
标签: node.js sails.js waterline