如果字段不存在或为空,Mongoose设置字段更新时的默认值。

问题描述 投票:0回答:1

我有一个mongoose模式,应该是这样的:-。

var mSchema = new Schema({
  name: { type: String, required: true}
});

我已经使用这个模式一年了,现在我想给它添加性别,就像这样:-。

var mSchema = new Schema({
  name: { type: String, required: true},
  gender: { type: String, default: 'Male' } 
});

每当有更新请求时,我想让这个性别自动设置为默认的男性,但我发现默认值在更新请求时并没有设置。(注意:这只是一个例子,不是真实的情况。我只是想让mongoose在字段不存在或为空的情况下默认工作)

有什么方法可以让我在更新文档时设置默认值?

mongodb mongoose updates mongoose-schema auto-update
1个回答
0
投票

如果你使用的是一个函数,如 update()那么,这并不是直接可能的,正如以下所言 这个 答案。不过,你还是可以简单地切换到一个类似于 findOne() 并使用 save(),应该也是这样做的。

在更新文件时,你也可以查看一下。setDefaultsOnInsert 选项。https:/mongoosejs.comdocsdefaults.html#the-setdefaultsoninsert-option。

const options = {
  // Create a document if one isn't found. Required
  // for `setDefaultsOnInsert`
  upsert: true,
  setDefaultsOnInsert: true
};

await XY.findOneAndUpdate(query, update, options);
© www.soinside.com 2019 - 2024. All rights reserved.