更新:将if(!result.length)更改为if(!result),因为我使用的是.findOne,而且这似乎工作到目前为止。如果您发现在代码片段中可以改进的其他任何内容都很棒!
刚开始学习Node JS和MongoDB(使用Mongoose),请原谅我,如果我完全脱离了上下文。
我试图使用以下查询在MongoDB中找到一行:
exports.findById = function(req, res) {
var id = req.params.id;
Team.findOne({'teamid':id, $or:[{'creator':req.user.id}, {userlist: { $in : [req.user.id]}}]}, function(err, result) {
if (err) console.log(err);
if (!result.length)
res.redirect('/');
else
res.render('team', { team : result.teamid });
});
};
我想要检索字段teamid
等于id
的行,以及检查字段creator
是否等于req.user.id
或req.user.id
1}}位于userlist
字段中。我期待上述查询中只有一个结果。
请注意,此查询工作正常,但我只需要查看userlist
数组:
Team.findOne({'teamid':id, 'creator':req.user.id}, function(err, result) {...
最后是团队架构
var Team = new Schema({
team_name: { type: String, required: true, trim: true},
teamid: { type: String },
creator: String,
created_at: Date,
userlist: Array
});
非常感谢任何有助于弄清楚问题是什么的帮助!