нормально У меня есть этот JSon файл:чтение и запись файла JSON в node.js
{
"joe": {
"name": "joe",
"lastName": "black"
},
"matt": {
"name": "matt",
"lastName": "damon"
}
}
и я хочу, чтобы добавить человека с Node.js:
{
"joe": {
"name": "joe",
"lastName": "black"
},
"matt": {
"name": "matt",
"lastName": "damon"
},
"brad": {
"name": "brad",
"lastName": "pitt"
}
}
С ниже кода Я пытаюсь прочитать json-документ, проанализировать его, добавить человека, а затем снова записать в файл. Однако анализируемый объект (jsonObj) не распознается в функции записи. Я знаю, что это связано с циклом событий, но я не уверен, как его решить. Я попытался использовать process.nextTick, но не могу заставить его работать.
var jsonObj;
fs.open('files/users.json', 'r+', function opened(err, fd) {
if (err) {
throw err;
}
var readBuffer = new Buffer(1024),
bufferOffset = 0,
readLength = readBuffer.length,
startRead = 0;
fs.read(fd, readBuffer, bufferOffset, readLength, startRead, function read(err, readBytes) {
if (err) {
throw err;
}
if (readBytes > 0) {
jsonObj = JSON.parse(readBuffer.slice(0, readBytes).toString());
jsonObj["brad"] = {};
jsonObj["brad"].name = "brad";
jsonObj["brad"].lastName = "pitt";
**//Until here it works fine and the 'jsonObj' is properly updated**
}
});
});
process.nextTick(function() {
var writeBuffer,
startWrite = 0,
bufferPosition = 0,
writeLength;
fs.open('files/users.json', 'r+', function opened(err, fd) {
if (err) {
throw err;
}
***//Below I get the 'jsonObj is undefined' error***
writeBuffer = new Buffer(JSON.stringify(jsonObj.toString(), null, '/\t/'));
writeLength = writeBuffer.length;
fs.write(fd, writeBuffer, bufferPosition, writeLength, startWrite, function wrote(err, written) {
if (err) {
throw err;
}
});
});
});
также более полезный ответ будет SetTimeout, который работает очень хорошо – Mcs
Лолы ... нет не используйте setTimeout либо – david
, почему нет, если я иду setTimeOut (theWriteFunction, 100), после функции чтения он работает – Mcs