【问题标题】:How to store data in database.db w/o data-loss?如何在没有数据丢失的情况下将数据存储在 database.db 中?
【发布时间】:2019-09-23 18:27:17
【问题描述】:

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

有什么方法可以存储数据而不会覆盖以及如何防止不必要的合并?

【问题讨论】:

    标签: javascript node.js json database object


    【解决方案1】:

    我认为你应该将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);
    })
    

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多