javascript - 无法使用 findOneAndUpdate 更新 MongoDB 中的记录
问题描述
我正在使用 Mongoose 更新 Announcement 记录,定义如下:
const { DateTime } = require('luxon');
const Schema = new mongoose.Schema({
title: String,
description: String,
date: {
type: Date,
set: (dt) => dt.toJSDate(),
get: (d) => DateTime.fromJSDate(d),
},
club: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Club',
},
});
我正在这个函数中执行更新操作
exports.update = async (id, params) => {
console.log(params)
await Announcement.findOneAndUpdate({ _id: id }, params, {
upsert: true,
useFindAndModify: false,
});
return "exports.get(id)";
};
但是,运行 Announcement.findOneAndUpdate 时出现错误:
$set' is empty. You must specify a field like so: {$set: {<field>: ...}}
这是参数的样子:
{
title: 'Name!',
description: 'Description!',
date: DateTime {
ts: 1601524800000,
_zone: LocalZone {},
loc: Locale {
locale: 'en-US',
numberingSystem: null,
outputCalendar: null,
intl: 'en-US',
weekdaysCache: [Object],
monthsCache: [Object],
meridiemCache: null,
eraCache: {},
specifiedLocale: null,
fastNumbersCached: null
},
invalid: null,
weekData: null,
c: {
year: 2020,
month: 10,
day: 1,
hour: 0,
minute: 0,
second: 0,
millisecond: 0
},
o: -240,
isLuxonDateTime: true
},
club: '99cb91bdc3464f14678934ca'
}
我知道所有 ObjectId 都是有效的,因为我已经从 Mongo shell 测试过它们。但是,我无法弄清楚为什么我无法在 Announcement 记录上运行 findOneAndUpdate。
解决方案
推荐阅读
- r - 将预测变量从列表传递给 cox 模型
- python - 使用python以没有类ID的html表格形式刮取数据
- mysql - MySQL Inner Join Where column = (可能的值列表)
- excel - (Excel)检查单元格中的日期>今天的日期是否为30天,另一个单元格=“打开”然后将单元格着色为红色
- apache-kafka - 如何在kafka流中“锁定”记录
- php - PDOException:SQLSTATE [HY000]:一般错误:7890 找不到文件
- node.js - TypeError:user.findOne 不是我模型上的函数
- python - 将 DataFrame 的结果输出到 QLabel
- python - 模拟内部方法 Python2
- javascript - 日历显示今天的当前日期以及接下来的 60 天