在猫鼬中我有这个模型:
var userschema = new mongoose.Schema({
user: String,
following: [String],
followers: [String]
});
var UserModel = db.model('UserModel', userschema);
但我不知道在用户内部搜索谁搜索以下和关注者数组。很容易,我可以这样做UserModel.find({ user: req.session.user }, function(err, user){[...]})
但在其中,我想搜索数组following
和followers
内的特定字符串。我可以使用for loop
来做,但我想如果我在数组中有很多String,那么搜索一个会很慢,甚至有问题。这是可行的吗?:
UserModel.findOne({ user: req.session.user }, function(err, user){
if (err) throw err;
user.findOne({ following: randomstring }, function(err, nuser){
if (err) throw err;
});
});
我认为这段代码不起作用,但也许有办法在不使用for loop
的情况下做我想做的事情。任何解决方案......?
答案 0 :(得分:0)
不,您无法在findOne
文档实例上调用user
。您可以执行的操作是在主following
调用中包含UserModel.findOne
字段,如下所示:
UserModel.findOne({ user: req.session.user, following: randomstring },
function(err, user){ ...
在回调中,只有当该用户关注user
时才会设置randomstring
。
当然,您也可以使用array.indexOf
在代码中轻松搜索数组:
if (user.following.indexOf(randomstring) !== -1) {
// user is following randomstring
}