search最大的id并在JSON文件(NodeJS)中添加新的最大ID

在执行插入操作时,我试图将下一个最大的ID添加到JSON文件中。 事情是,当我有例如身份证:13,它使新的对象与ID:14和重写旧的对象与ID:14,之后,我有2个对象具有相同的ID。

我错了什么?

fs.readFile("DB.json", "utf8", function (err, data) { var jsonFileArr = []; // DB.json objects jsonFileArr = JSON.parse(data); function maxValue(jsonFileArr, prop) { // Searches for the biggest numbers in DB.json var max = ""; for (var i = 0; i < jsonFileArr.length ; i++) { if (!max || parseInt(jsonFileArr[i][prop]) > parseInt(max[prop])) max = jsonFileArr[i]; } return max; } var maxID = maxValue(jsonFileArr, "id"); //Biggest ID console.log("\r\nBiggest ID : " + maxID.id); newID = ++maxID.id; var updateData = { id : newID, // new ID name: POST.name, // Objects that come from POST request when i add new row in the table alter: POST.alter, produkt: POST.produkt, anzahl: POST.anzahl } jsonFileArr.push(updateData); var newUsers = JSON.stringify(jsonFileArr); fs.writeFile("JSON/DB.json", newUsers, "utf8"); console.log("New user has been added with ID : " + newID); 

写在香草JavaScript,所以应该直接在Node.js工作。

 var jsonObj = [{ "id": 3, "player": "Carmelo Anthony", "team": "New York Knicks" }, { "id": 1, "player": "Andre Drummond", "team": "Detroit Pistons" }, { "id": 2, "player": "Anthony Davis", "team": "New Orleans Pelicans" }] function getNextId(obj) { return (Math.max.apply(Math, obj.map(function(o) { return o.id; })) + 1); } alert('Next ID is ' + getNextId(jsonObj)); 

你返回指向嵌套对象的指针

 max = jsonFileArr[i]; 

之后,你这样做

 newID = ++maxID.id; 

这也会增加jsonFileArr [i] .id属性。

所以为了解决这个问题,就这样做

 newID = maxID.id + 1; 

或者直接返回函数maxValue中的max.id;