Node.js Mongoose model.find()在调用model.save()后返回null(等待调用)
请注意,有一个与此非常相似的问题:但在这个问题中,问这个问题的人犯了一个错误,没有等待承诺。但我确实等了。所以我的问题会有所不同 我有这个密码Node.js Mongoose model.find()在调用model.save()后返回null(等待调用),node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,请注意,有一个与此非常相似的问题:但在这个问题中,问这个问题的人犯了一个错误,没有等待承诺。但我确实等了。所以我的问题会有所不同 我有这个密码 const mongoose = require("mongoose") const {connection, Schema} = mongoose mongoose.connect("mongodb://localhost:27017/test").catch(console.error) const Use
const mongoose = require("mongoose")
const {connection, Schema} = mongoose
mongoose.connect("mongodb://localhost:27017/test").catch(console.error)
const UserSchema = new Schema({
firstName: String,
lastName: String,
likes: [String]
})
const User = mongoose.model("User", UserSchema)
const addUser = (firstName, lastName) => new User({
firstName,
lastName
}).save()
const getUser = (id) => User.findById(id)
const removeUser = (id) => User.remove({id})
connection.once("connected", async () => {
try {
const newUser = await addUser("John", "Smith")
const user = await getUser(newUser.id)
user.firstName = "Johny"
user.lastName = "Smithy"
user.likes = [
"cooking",
"watching movies",
"ice cream"
]
await user.save()
console.log(JSON.stringify(user, null, 4))
} catch (error) {
console.dir(error.message, {colors: true})
} finally {
await connection.close()
}
})
这里连接完成后,我通过调用addUser()
创建一个新用户,它构造user
模式,并将其分配给newUser
常量。在下一行中,我调用getUser
,它调用User.findById(newUser.id)
。但这将返回null
。我已经检查了我的数据库,有一个新条目。但是我不知道为什么User.findById
返回null。如您所见,我在前一行中使用了wait
关键字来验证承诺是否得到了解决
由于null
值,我得到如下错误
Cannot set property 'firstName' of null
那么,如何解决这个问题呢