LoopBack警告:无法将id属性更改为

时间:2018-06-08 19:00:07

标签: mongodb loopbackjs

我使用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字段?

感谢。

1 个答案:

答案 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": {}

}