Как хранить данные в database.db без потери данных? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь сохранить несколько данных из разных файлов в database.db без каких-либо библиотек, таких как MongoDB или MySQL.

Проблема в том, что database.db продолжает перезаписывать при получении новых данных от каждого экземпляра.

{"score": 12} // Сохраняет только последние данные.

Кроме того, когда я постоянно обновляю браузер, иногда данные собираются в странный шаблон, подобный следующему:

{"score": 12} p "} // То, что p - последняя буква слова из первого экземпляра, «Temp».

Вот как я сделал в коде:

// instance1.js
class A {
    constructor(name) {
        this.name = name
        this.post();
    }
    async post() {
        const options = {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(this)
        };
        const response = await fetch('/', options);
        const json = await response.json();
    }
}
let newa = new A('Temp');

// instance2.js
class B {
    constructor(score) {
        this.score = score
        this.post();
    }
    async post() {
        const options = {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(this)
        };
        const response = await fetch('/', options);
        const json = await response.json();
        }
}
let newb = new B(12);

// server.js
const express = require('express');
const fs = require('fs');
const app = express();

app.listen(3000, () => console.log('initialized . . .'));
app.use(express.static('public'));
app.use(express.json({limit: '10mb'}));

app.post('/', (request, response) => {
    var instance = request.body,
        object = JSON.stringify(instance);
    fs.writeFile('database.db', object, () => {
        console.log(object);
    });
    response.json(request.body);
})

Моя цель -сохранить объекты в базе данных для отправки обратно на клиентский javascript.

Существуют ли способы хранения данных без перезаписи и как предотвратить нежелательное слияние?

1 Ответ

2 голосов
/ 23 сентября 2019

Я думаю, вы должны изменить в post запрос writeFile на appendFile

app.post('/', (request, response) => {
  var object = JSON.stringify(request.body);
  fs.appendFile('database.db', object, (data) => {
    console.log(data);
  });
  response.json(request.body);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...