微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法更新猫鼬模型,.findByIdAndUpdate无法正常工作

如何解决无法更新猫鼬模型,.findByIdAndUpdate无法正常工作

我正在尝试更新mongoDB中的项目,但无法使其正常工作。我已经搜索了这个问题,但似乎找不到我做错了什么。我在控制台中没有任何错误,它实际上表示更新成功。到目前为止,我已经能够在数据库中创建和查找项目了。。如果有人可以帮助我找到问题,这是我的代码

const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/fruits",{ useNewUrlParser: true,useUnifiedTopology: true });

const fruitSchema = new mongoose.Schema({
    name: String,rating: Number
});

const Fruit = mongoose.model("Fruit",fruitSchema);

// CREATE
// Fruit.create({
//     name: "Grape",//     rating: "7"
// },(err,fruit) => {
//     if (err) {
//         console.log(err);
//     } else {
//         console.log("SAVED FRUIT!");
//         console.log(fruit);
//     }
// });

// READ
// Fruit.findById({ _id: "5f85e2e36ef7e00c97ac484f" },fruit) => {
//     if (err) {
//         console.log(err);
//     } else {
//         console.log("FOUND FRUIT!");
//         console.log(fruit);
//     }
// });

// UPDATE
Fruit.findByIdAndUpdate({ _id: "5f85e2e36ef7e00c97ac484f" },{ $set: { color: "Green" } },fruit) => {
    if (err) {
        console.log(err);
    } else {
        console.log("UPDATED FRUIT!");
        console.log(fruit);
    }
});

这是数据库的外观,

{
    "_id" : ObjectId("5f85e2e36ef7e00c97ac484f"),"name" : "Kiwi","rating" : 6,"__v" : 0
}
{
    "_id" : ObjectId("5f85e3003dbb9d0c9bcca90d"),"name" : "Grape","rating" : 7,"__v" : 0
}

解决方法

在猫鼬模式中定义颜色

const fruitSchema = new mongoose.Schema({
    name: String,rating: Number,color: String   // add this one.
});

在更新时,无需使用$ set,只需传递对象即可。

Fruit.findByIdAndUpdate({ _id: "5f85e2e36ef7e00c97ac484f" },{ color: "Green" },(err,fruit) => {
    if (err) {
        console.log(err);
    } else {
        console.log("UPDATED FRUIT!");
        console.log(fruit);
    }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。