Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不丢失数据的情况下在database.db中存储数据?_Javascript_Node.js_Json_Database_Object - Fatal编程技术网

Javascript 如何在不丢失数据的情况下在database.db中存储数据?

Javascript 如何在不丢失数据的情况下在database.db中存储数据?,javascript,node.js,json,database,object,Javascript,Node.js,Json,Database,Object,我正在尝试将不同文件中的多个数据保存到database.db中,而不使用任何库,如MongoDB或MySQL 一个问题是database.db从每个实例接收新数据时会不断覆盖 {score:12}//它只保存最后的数据 此外,当我不断刷新浏览器时,有时数据会以一种奇怪的模式合并,如下所示: {score:12}p}//p是来自第一个实例“Temp”的单词的最后一个字母 我在代码中就是这样做的: // instance1.js class A { constructor(name) {

我正在尝试将不同文件中的多个数据保存到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


有没有办法存储数据而不进行覆盖,以及如何防止不必要的合并?

我认为您应该在请求后将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);
})