gpt4 book ai didi

node.js - Mongoose Model.update 在我的代码中不起作用

转载 作者:可可西里 更新时间:2023-11-01 10:46:02 27 4
gpt4 key购买 nike

我想用给定的 ID 更新一些类(class)属性。这是我的代码:

const mongoose = require('mongoose');
const courseSchema = new mongoose.Schema({
name: String,
author: String,
tags: [String],
date: Date,
isPublished: Boolean,
price: Number
});

const Course = mongoose.model('Course', courseSchema);
mongoose.connect('mongodb://localhost/mongo-exercises');

async function updateCourse(id) {
const result = await Course.update({_id: id}, {
$set: {
author: 'New',
isPublished: false
}
});

console.log(result);
}

updateCourse('5a68fde3f09ad7646ddec17e');

在控制台上我得到 {ok: 1, nModified: 0, n: 0}

我试过用这种其他方式更新元素,但它不起作用。对于这段代码,我没有得到结果,没有响应:

const course = await Course.findById(id);
if(!course) return;

course.isPublished = true;
course.author = 'Another Author';

const result = await course.save();
console.log(result);

当我尝试使用 findByIdAndUpdate 和其他代码进行更新时,控制台中的结果为空:

 async function updateCourse(id) {
const course = await Course.findByIdAndUpdate(id, {
$set: {
author: 'Billy',
isPublished: false
}
});

console.log(course);

}
updateCourse('5a68fde3f09ad7646ddec17e');

我正在使用的数据库有:

 { _id: 5a68fdd7bee8ea64649c2777,
name: 'Node.js Course',
author: 'Sam',
isPublished: true,
price: 20 },
{ _id: 5a68fde3f09ad7646ddec17e,
name: 'ASP.NET MVC Course',
author: 'Mosh',
isPublished: true,
price: 15 },
{ _id: 5a6900fff467be65019a9001,
name: 'Angular Course',
author: 'Mosh',
isPublished: true,
price: 15 },
{ _id: 5a68fe2142ae6a6482c4c9cb,
name: 'Node.js Course by Jack',
author: 'Jack',
isPublished: true,
price: 12 }

类(class)不会更新。错误在哪里?请注意,如果我想创建新文档,它不会有任何问题。

最佳答案

update({_id: id},...) 指定 _id 期望文档中的 _id 类型为 ObjectID

update()findById(),没有找到_id,返回null,因为_id 类型可能是您的集合/文档中的 String,请使用 Compass 检查。

关于node.js - Mongoose Model.update 在我的代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com