我遇到一个问题,我的 Mongoose 模式中的 set 函数有时在更新查询中使用负值的 $inc 运算符时不会被触发。
我有一个 Mongoose 模式,其中为一个字段定义了一个 setter 函数,该字段应在将其值保存到数据库之前对其进行格式化。架构如下所示:
const userSchema = new mongoose.Schema({
money: {
balance: {
type: Number,
set: (v) => Number(v)?.toFixed(4),
default: 0,
},
},
});
但是,当我在具有负值的 findByIdAndUpdate 查询中使用 $inc 运算符更新字段时,不会调用 set 函数,并且不会对值进行格式化:
await User.findByIdAndUpdate(userId, {
$inc: {
'money.balance': -1.3245479576,
},
},
{ runValidators: true }
);