我正在尝试使用 mongoose 在我的 Node 应用程序中查找用户
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);
}
});
}
和 err
和 user
始终返回 null
。从这里的其他问题( this 和 this )来看,这通常似乎与 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
}
});
最后,我确信公共(public)地址存在,因为我可以使用 Robo 3T 在 mongoDB 中看到它。
最佳答案
在您的 userSchema
中,publicAddress
是 local
对象的一部分。
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);
}
});
关于javascript - Mongoose findOne() 回调返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375603/