Dag*_*nqx 4 mongoose mongodb node.js
我有一个看起来像这样的架构:
"use strict"
const mongoose = require('mongoose');
const timestamp = require('mongoose-timestamp');
const CustomerSchema = new mongoose.Schema({
name : {
type : String,
required : true,
trim : true
},
email : {
type : String,
required : true,
trim : true
},
balance : {
type : Number ,
default : 0
}
})
//use timestamps to add created at and updated at
CustomerSchema.plugin(timestamp);
const Customer = mongoose.model('Customer',CustomerSchema);
module.exports = Customer;
Run Code Online (Sandbox Code Playgroud)
当我想运行更新时,我运行此代码
const Customer = require('../models/Customer');
const customer = await Customer.findOneAndUpdate({_id : req.params.id}, req.body);
Run Code Online (Sandbox Code Playgroud)
所以req.body
携带将要更新的数据 问题是我不希望人们更新电子邮件字段。
所以我的问题是:
如何锁定电子邮件字段不被更新。有没有办法将它锁定在架构中,以便它只能在最初添加而不能在以后更新?
谢谢 。
小智 6
您可以在架构级别定义一个名为 的属性immutable
。
参考文档:https : //mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable
所以你的架构看起来像这样:
const CustomerSchema = new mongoose.Schema({
name : {
type : String,
required : true,
trim : true
},
email : {
type : String,
required : true,
trim : true,
immutable: true // ADD THIS PROPERTY HERE
},
balance : {
type : Number ,
default : 0
}
}
Run Code Online (Sandbox Code Playgroud)
没有阻止更新的功能
您可以通过
body
delete req.body.email;
const customer = await Customer.findOneAndUpdate({_id : req.params.id}, req.body);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1712 次 |
最近记录: |