鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)  HTML/ Mongodb 保存數(shù)據(jù)如何保證字段的完整性?

Mongodb 保存數(shù)據(jù)如何保證字段的完整性?

例如:
我后端的model定義了一個(gè)對(duì)象,

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

由于我的name字段跟email字段都是非必填項(xiàng), 所以在前端我沒(méi)有傳,傳了如下格式的json:

user =  {
mobile: 1118828819
}

后端接收到這個(gè)json后直接保存在MongoDB中,當(dāng)我下次需要調(diào)用這個(gè)用戶的信息時(shí),后端從數(shù)據(jù)庫(kù)讀取該條記錄,但是,有一個(gè)問(wèn)題,剩余的兩個(gè)字段都沒(méi)有,這樣就與我跟前端定義的接口字段,有出入,這要怎么解決呢?

回答
編輯回答
北城荒

@歐兜兜是素姀 的回答是正確的,mongoose的Schema可以使用required屬性來(lái)規(guī)范數(shù)據(jù),這樣不符合要求的數(shù)據(jù)存入mongodb會(huì)失敗的。

但是,就算是數(shù)據(jù)庫(kù)規(guī)范了,前端也不能假設(shè)數(shù)據(jù)庫(kù)返回的數(shù)據(jù)沒(méi)問(wèn)題,前端還是需要對(duì)后端返回的數(shù)據(jù)進(jìn)行驗(yàn)證和容錯(cuò)。因?yàn)榍岸撕秃蠖耸欠蛛x的,前端需要假設(shè)后端會(huì)出錯(cuò)。事實(shí)上,后端出錯(cuò)也是無(wú)法避免的,因?yàn)榇a一直在修改,哪天后端不小心刪掉required字段呢?

2018年9月20日 06:45
編輯回答
歆久

我不知道你連接mongoDB用的是mongodb.js還是mongoose.js
如果是mongodb.js,你在創(chuàng)建這個(gè)用戶的時(shí)候做一下判空,沒(méi)有的話給一個(gè)默認(rèn)值存進(jìn)去
如果是mongoose.js,在定義Schema的時(shí)候可以設(shè)置默認(rèn)值,如

const schema = new Schema({
    name:{
        type:String,
        required:true,
        default:'name'
    },
    //...
});
2017年11月6日 21:23
編輯回答
夢(mèng)囈

是否可以加一個(gè)defult為空字符串

2018年2月12日 18:48