Mongoose findOne()回调返回null

时间:2017-07-28 14:08:39

标签: javascript node.js mongodb mongoose

我正在尝试使用

在我的节点应用中找到一个使用mongoose的用户
var User = require('../app/models/user');

function mongoTest() {
    var publicAddress = "0x8a6be8979340faa30020b0c1f617d8fd4309679f";
    User.findOne({"publicAddress": publicAddress}, (err, user) => {
        if (err) {
            res.status(500).send(err)
        } else {
            console.log(user);
        }
    });
}

erruser始终返回null。从这里的其他问题(thisthis),这通常似乎与猫鼬复数集合有关。但是,我不认为这是我的问题,因为我的users.js有

module.exports = mongoose.model('User', userSchema);
// Have also tried module.exports = mongoose.model('User', userSchema, 'User');

为了完整性,users.js是

var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');

// Define the schema for our user model
var userSchema = mongoose.Schema({
    local: {
        username: String,
        password: String,
        pictureCaption: String,
        publicAddress: String,
        contractAddress: String
    }
});

最后,我确信公共地址存在,因为我可以在使用Robo 3T的mongoDB中看到它。

1 个答案:

答案 0 :(得分:1)

userSchema中,publicAddresslocal对象的一部分。

var userSchema = mongoose.Schema({
    local: {
        username: String,
        password: String,
        pictureCaption: String,
        publicAddress: String,
        contractAddress: String
    }
});

您正在尝试查找publicAddress的对象,但它实际上位于local对象中。因此,您应该按如下方式编辑查询以获得结果。

User.findOne({"local.publicAddress": publicAddress}, (err, user) => {
        if (err) {
            res.status(500).send(err)
        } else {
            console.log(user);
        }
    });