#javascript #string #node.js #file-io
#javascript #строка #node.js #file-io
Вопрос:
В настоящее время я разрабатываю Node.js веб-сервер, который будет хранить запросы в виде объектов JSON и сохранять их в текстовом файле.
Примером указанного текстового файла является это:
{"elements":[
{"email":"test@test.com","timestamp":"22:10:54"},
{"email":"foo@foobar.com","timestamp:"09:56:49"}
]}
Что я хочу сделать, так это иметь возможность добавлять данный JSON в этот текстовый файл. Это было бы сложнее, чем простая функция fs.append(), потому что я должен сначала избавиться от
n]}
это закрывает JSON, а затем придерживаться
,{"email":"INPUT EMAIL HERE","timestamp":"INPUT TIMESTAMP HERE"}n]}
для формирования нового завершенного JSON,
{"elements":[
{"email":"test@test.com","timestamp":"22:10:54"},
{"email":"foo@foobar.com","timestamp:"09:56:49"},
{"email":"INPUT EMAIL HERE","timestamp":"INPUT TIMESTAMP HERE"}
]}
Я хочу сделать все это без необходимости загружать текстовый файл с помощью fs.readFileSync(путь), потому что это будет усложняться с каждой новой записью. Итак, моя главная проблема заключается в том, что мне нужен способ удаления (эффективного обратного добавления) нескольких символов из конца файла, чтобы я мог добавлять к вновь введенным элементам. Я уже просмотрел документ (http://nodejs.org/docs/latest/api/fs.html#fs_fs_createwritestream_path_options ) и я не видел для этого никакой функции, но я решил, что должен быть способ сделать это.
Комментарии:
1. Поскольку вы работаете с файлом JSON в javascript, вы можете разобрать его в реальный объект javascript, добавить свой новый объект к
elements
члену, упорядочить объект и вывести его обратно в файл.2. Видите ли, это была моя первоначальная идея. Но что, если бы у меня был длинный список из 1 000 000 элементов из-за атаки? Мне нужно иметь возможность делать это без фактической загрузки всего списка в оперативную память.
3. Более того, это было бы довольно медленно, если бы я мог просто добавить пробелы в документ, это было бы очень быстро.
4. оставьте часть «elements: [» и скобку end close array и добавьте их обратно в место, которое вы вызываете JSON.parse, таким образом, вы можете наивно добавить. короче говоря, файл «почти json». если вам нужно обновить вместо вставки, вам нужно проанализировать все это целиком…