【发布时间】:2016-08-04 19:41:38
【问题描述】:
我使用sails.js 构建了一个网络应用程序,我的数据库是mongo。
这是我的模特 - 对话:
module.exports = {
tableName: 'conversations',
attributes: {
members: {
type: 'array',
collection: 'user'
},
status: {
type: 'boolean',
defaultsTo: true,
required: true
}
}
};
正如您在上面看到的,我有一个成员数组(用户模型)。 但是,在数据库中,Conversations 集合的每个文档都保存没有“成员”字段,但 Sails js 创建了一个新集合“conversation_members__user_members_user” - 我猜是“加入”。
当我使用“查找”从“对话”集合中获取文档时,我得到以下信息:
{
"status": true,
"createdAt": "2016-08-03T18:55:03.993Z",
"updatedAt": "2016-08-03T18:55:04.016Z",
"id": "57a23e079983469c1a20810a"
}
当然,没有“成员”(因为sails 将它们保存在另一个集合中)。
我的问题:
当我尝试使用此代码对“成员”使用本机查询时,我没有得到任何结果:
var members = ["579d083a38db0c7c07860819", "579d088fbab7ec0c0be80c77"];
Conversation.native(function(err, collection) {
collection.find({ members.id: {'$all':members }}).toArray(function(err, results) {
if (err) return res.serverError(err);
return res.ok(results);
});
});
我认为问题在于对话文档中没有“成员”字段,因此没有结果是有道理的。
所以,如果我想对“成员”进行本机查询(因为sails 查询还不够)- 我该怎么做? 或者如何在对话文档中添加“成员”字段?
非常感谢!
【问题讨论】:
标签: mongodb sails.js sails-mongo