大家好,我是 Node 和 mongo 的新手,希望得到您的帮助。 我用猫鼬定义了一个用户模式:
var userSchema = mongoose.Schema({
local : {
email : String,
password : String,
name : String
},
facebook : {
id : String,
email : String,
token : String,
firstName : String,
familyName : String
},
google : {
id : String,
email : String,
token : String,
firstName : String,
familyName : String
}});
我尝试使用特定电子邮件获取所有用户(来自本地谷歌和 Facebook)。 我该怎么写呢? 我尝试过类似的事情:
var User = require('./models/user');
app.get('/api/user/:email',function(req,res){
User.findOne({'email':req.params.email},function(err,user){
res.json(user);
})
});
我该如何解决? 谢谢。
添加
module.exports = mongoose.model("User", userSchema);
到您的架构文件。
然后尝试以下操作:
var User = require('./models/user');
app.get('/api/user/:email',function(req,res){
User.findOne({"local.email": req.params.email}, function(err,user){
res.json(user);
});
});
或者对于所有三个:
var User = require('./models/user');
app.get('/api/user/:email',function(req,res){
User.findOne({$or: [
{"local.email": req.params.email},
{"facebook.email": req.params.email},
{"google.email": req.params.email}
]}, function(err,user){
res.json(user);
});
});
$or 运算符:此 MongoDB 运算符用于搜索任何给定条件为 true 的文档。在本例中,它会检查本地、facebook 和 google 的所有三个电子邮件字段。