【发布时间】:2016-12-17 09:43:47
【问题描述】:
我正在尝试在 Express 应用中更新存储在 JSON 文件中的项目。基本上我正在读取 JSON 文件的内容,更新 Id 获取的项目并将更新后的 item.Problem 写入文件? 它正在附加更新的项目,所以我得到了重复。看不到哪里出错了?
posts.json:
[
{
"name": "first name",
"description": "test first description",
"slug": "first-name",
"id": "2f065d59"
},
{
"name": "second name",
"description": "test second description",
"slug": "second-name",
"id": "0071b034"
}
]
create-update-delete.js:
var express = require('express');
var Creatordb = require('./database/posts.json');
var fs = require('fs');
var uuid = require('node-uuid');
var _ = require('lodash');
//Create The Item
var add = function (item) {
var id = uuid.v4();
item.id = id;
Creatordb[item.id] = item;
var outputFilename = './database/posts.json';
function appendObject(obj){
var configFile = fs.readFileSync(outputFilename);
var config = JSON.parse(configFile);
config.push(obj);
var configJSON = JSON.stringify(config, null, 4);
fs.writeFileSync(outputFilename, configJSON);
}
appendObject(item);
};
//Get The Item by Id
var getById = function (id) {
for(var i=0;i<Creatordb.length;i++) {
var id = Creatordb[i].id;
}
return id;
};
//Update The Item
var update = function (item) {
var outputFilename = './database/posts.json';
var configFile = fs.readFileSync(outputFilename);
var config = JSON.parse(configFile);
//using lodash??
var index = _.indexOf(config, _.find(config, item));
config.splice(index, 1, item);
var configJSON = JSON.stringify(config, null, 4);
fs.writeFileSync(outputFilename, configJSON);
};
如果我更新一个项目,posts.json 将如下所示:
[
{
"name": "first name",
"description": "test first description",
"slug": "first-name",
"id": "2f065d59"
},
{
"name": "second name edited",
"description": "test second description edited",
"slug": "second-name-edited",
//this id disappeared "id": "0071b034"//
}
]
现在使用 lodash 更新项目中的 ID 消失了吗? 谁能解释一下? - 谢谢
【问题讨论】:
标签: javascript arrays json node.js express