我正在尝试更新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" }, (err, fruit) => {
// if (err) {
// console.log(err);
// } else {
// console.log("FOUND FRUIT!");
// console.log(fruit);
// }
// });
// UPDATE
Fruit.findByIdAndUpdate({ _id: "5f85e2e36ef7e00c97ac484f" }, { $set: { color: "Green" } }, (err, 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
}
答案 0 :(得分: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);
}
});