首页 文章

Mongoose findOne()回调返回null

提问于
浏览
0

我正在尝试使用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 回答

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

相关问题