我使用LoopBack和MongoDB作为我的数据源,并将一个简单的模型定义为:
{
"name": "restaurant",
"plural": "restaurants",
"base": "PersistedModel",
"idInjection": false,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
},
"address": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
我的/server/boot
中有一个自动迁移脚本,可以创建两个简单的测试数据
之后,当我尝试使用LoopBack的API资源管理器使用PUT请求更新其中一个条目时,我收到警告
WARNING: id property cannot be changed from ... to ... for model:restaurant in 'before save' operation hook
WARNING: id property cannot be changed from ... to ... for model:restaurant in 'loaded' operation hook
在DB中创建冗余id
字段(与mongo的_id字段相同)。
我可以通过将id
设置为idInjection
并将模型定义中的另一个属性定义为:
false
字段
"_id": {
"id": true,
"generated": true
}
但是,在从LoopBack的API资源管理器发出PUT请求后,我仍然收到警告。
如何在模型定义中正确定义mongo的_id
字段?
感谢。
答案 0 :(得分:0)
您可以通过在模型JSON中添加“隐藏”字段来隐藏ID。并将“ id”添加到要隐藏的数组中。
{
"name": "restaurant",
"plural": "restaurants",
"hidden": [
"id"
],
"base": "PersistedModel",
"idInjection": false,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
},
"address": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}