【问题标题】:Mongoose findOne() callback returning nullMongoose findOne() 回调返回 null
【发布时间】:2017-07-28 22:36:22
【问题描述】:

我正在尝试使用 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)来看,这通常似乎与 mongoose 多元化集合有关。但是,我认为这不是我的问题,因为我的 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 中看到它。

【问题讨论】:

  • 你的 Mongo 收藏必须命名为users,是这样吗?
  • 是的。
  • 啊啊,publicAddress 嵌套在 local 中。你应该打电话给User.findOne({"local.publicAddress": publicAddress}Err 为 null 因为没有错误,user 为 null 因为 Mongo 没有找到任何东西。

标签: javascript node.js mongodb mongoose


【解决方案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);
        }
    });

【讨论】:

  • 就是这样,打扰了道歉!
  • 该死,我应该将其发布为答案而不是评论。
  • 看到您的评论后没有复制粘贴。本来打算写的,来晚了。
猜你喜欢
  • 2015-04-30
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 2016-07-14
  • 2018-07-07
  • 2018-08-07
相关资源
最近更新 更多