首页 > 解决方案 > 带有 json-server 的 Angular 发布实体,没有 ID

问题描述

我正在使用模拟服务器 json-server 开发一个 Angular 项目。GET 工作正常,但现在我在使用 POST 时遇到了一些问题。
interventi.json用这些数据定义了这个文件:

{
    "interventi":[
        {
            "codice": "123",
            "codiceUso": 897,
            "dataIntervento": "21-06-2019",
            "dataInserimento": "24-06-2019",
            "cooperativa": "Example",
            "puntoVendita": "Example",
            "tipiAttivita": [
                "Prelievo",
                "Sanzione"
            ],
            "organoCompetente": "Ex"
        },
        {
            "codice": "456",
            "codiceUso": 823764,
            "dataIntervento": "24-06-2019",
            "dataInserimento": "29-06-2019",
            "cooperativa": "Example 2",
            "puntoVendita": "Example 2",
            "tipiAttivita": [
                "Prelievo"
            ],
            "organoCompetente": "Ex"
        }
    ]
}

我正在尝试发布这个json:

{  
   "codice":"a7spx",
   "codiceUso":"123",
   "dataIntervento":"2019-06-21T12:58:09.345Z",
   "cooperativa":"2",
   "puntoVendita":2,
   "tipiAttivita":[  
      "Attivita 1",
      "Attivita 2"
   ],
   "organoCompetente":3,
   "dataInserimento":"2019-06-21T12:58:09.345Z"
}

但它给了我 500 内部服务器错误:

“TypeError:无法读取 Function.createId 处未定义的属性 'id'(C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\json-server\lib\server\mixins .js:47:39) 在 Function.insert (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\lodash-id\src\index.js:47:49 ) 在 C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\lodash\lodash.js:4374:28 在 arrayReduce (C:\Users\Marina\coop-workspace\ wqrng\web\src\main\angular\wqrng\node_modules\lodash\lodash.js:683:21) 在 baseWrapperValue (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\ node_modules\lodash\lodash.js:4373:14) 在 LodashWrapper.wrapperValue (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\lodash\lodash.js:9052:14) 在层创建 (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\json-server\lib\server\router\plural.js:225:50) .handle [as handle_request] (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\layer.js:95:5) 在下一个 (C :\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\route.js:137:13)在下一个(C:\Users\Marina\coop-工作区\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\route.js:131:14)"5) 在下一个 (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\route.js:137:13) 在下一个 (C:\用户\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\route.js:131:14)"5) 在下一个 (C:\Users\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\route.js:137:13) 在下一个 (C:\用户\Marina\coop-workspace\wqrng\web\src\main\angular\wqrng\node_modules\express\lib\router\route.js:131:14)"

我已按照本教程进行发布,发现该字段id不是强制性的,但服务器正在抱怨。如果我id在我的 json 中添加字段,它可以正常工作。但我不想在我的实体中使用 id,有没有办法禁用这种行为?

编辑

// Return incremented id or uuid
// Used to override lodash-id's createId with utils.createId
function createId(coll) {
  var _ = this;
  var idProperty = _.__id();
  if (_.isEmpty(coll)) {
    return 1;
  } else {
    var id = _(coll).maxBy(idProperty)[idProperty];

    // Increment integer id or generate string id
    return _.isFinite(id) ? ++id : nanoid(7);
  }
}

标签: jsonangularlodashangular7json-server

解决方案


如果您使用除默认“id”以外的任何 id,则您已使用 json-server CLI 显式配置它。

--id, -i           Set database id property (e.g. _id)         [default: "id"]

检查以下链接

https://github.com/typicode/json-server#cli-usage


推荐阅读