Mongodb 保存数据如何保证字段的完整性?

例如:
我后端的model定义了一个对象,

user = {
name: required false,
mobile: required true,
email: required false
}

由于我的name字段跟email字段都是非必填项, 所以在前端我没有传,传了如下格式的json:

user =  {
mobile: 1118828819
}

后端接收到这个json后直接保存在MongoDB中,当我下次需要调用这个用户的信息时,后端从数据库读取该条记录,但是,有一个问题,剩余的两个字段都没有,这样就与我跟前端定义的接口字段,有出入,这要怎么解决呢?

阅读 3.9k
3 个回答

我不知道你连接mongoDB用的是mongodb.js还是mongoose.js
如果是mongodb.js,你在创建这个用户的时候做一下判空,没有的话给一个默认值存进去
如果是mongoose.js,在定义Schema的时候可以设置默认值,如

const schema = new Schema({
    name:{
        type:String,
        required:true,
        default:'name'
    },
    //...
});

是否可以加一个defult为空字符串

@欧兜兜是素姀 的回答是正确的,mongoose的Schema可以使用required属性来规范数据,这样不符合要求的数据存入mongodb会失败的。

但是,就算是数据库规范了,前端也不能假设数据库返回的数据没问题,前端还是需要对后端返回的数据进行验证和容错。因为前端和后端是分离的,前端需要假设后端会出错。事实上,后端出错也是无法避免的,因为代码一直在修改,哪天后端不小心删掉required字段呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题