【发布时间】:2019-12-12 18:59:32
【问题描述】:
我有一个这样的集合模型:
const Task = mongoose.model('Task', {
description: {
type: String,
trim: true,
required: true
},
completed: {
type: Boolean,
default: false
}
})
目前,当用户尝试使用 API 更新文档时,任何不在架构中的字段都将被忽略,并且文档将被更新。如果用户使用数据库中不可用的字段向 API 发送更新请求,我想抛出错误。
如果我在数据库中有一个 ID 为 12345 的任务:
{
_id: 12345,
description: "Buy cheese."
completed: false
}
并且用户向 API 发送更新查询以执行任务:
id = '12345'
updates = {
description: 'Buy Milk',
due: '1 Week' //<-- Invalid Field
}
我使用这个对象来更新文档:
await Task.findByIdAndUpdate(id, updates)
mongoose 完全忽略无效的due 字段并使用新的description 字段更新文档。
有没有一种干净的方法来避免这种无效的更新请求?
【问题讨论】:
-
@SaiKrishna 这是一个不同的问题。我正在尝试使用客户端通过 API 端点提供的数据更新现有文档。我想确保客户端在发送无效字段进行更新时收到错误,而不是仅仅忽略未知字段。