获取具有特定属性的所有用户

问题描述 投票:0回答:2

大家好,我是 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);
    })
});

我该如何解决? 谢谢。

node.js mongodb rest mongoose
2个回答
2
投票

添加

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);
    });
});

0
投票

$or 运算符:此 MongoDB 运算符用于搜索任何给定条件为 true 的文档。在本例中,它会检查本地、facebook 和 google 的所有三个电子邮件字段。

© www.soinside.com 2019 - 2024. All rights reserved.