Javascript 带有JSON数据控件的Express

Javascript 带有JSON数据控件的Express,javascript,node.js,express,Javascript,Node.js,Express,我使用lowDB依赖关系来控制Express中的JSON数据,实际上它是有效的。但是有一个bug,我找不到如何解决它 我创建/创建页面以在JSON文件中添加信息,它包含4个表单和提交按钮 在express中,我的代码是这样的。每个表单数据将保存在变量中,并使用lowdb模块推送 router.post('/post', function (req, res) { let pjName = req.body.projectName; let pjURL = req.body.project

我使用lowDB依赖关系来控制Express中的JSON数据,实际上它是有效的。但是有一个bug,我找不到如何解决它

我创建/创建页面以在JSON文件中添加信息,它包含4个表单和提交按钮

在express中,我的代码是这样的。每个表单数据将保存在变量中,并使用lowdb模块推送

router.post('/post', function (req, res) {
  let pjName = req.body.projectName;
  let pjURL = req.body.projectURL;
  let pjtExplanation = req.body.projectExplanation;
  let pjImgURL = req.body.projectImgURL;
  console.log(pjName);
  db.get('project').push({
    name: pjName,
    url: pjURL,
    explanation: pjtExplanation,
    imgurl: pjImgURL
  }).write();
  console.log(db.get('project'));
  console.log(db.get('project').value());
  res.redirect('/');
})
而且效果很好。但是当我自己修改JSON文件(例如重置JSON文件)并再次执行时。它显示了我之前重置的数据。我认为在这个应用程序中,某个地方保存了所有数据,并再次显示保存在数组中。
当我在CMD中关闭应用程序并再次执行时,数组被初始化。

因为您可能已经知道lowdb会将数据保存到辅助内存(hdd)中,并且在调用
write
方法时,可能会根据您的环境返回一个承诺。如文档中所述

使用adapter.write持久化数据库(取决于适配器,可能会返回承诺)

因此,当您读取数据时,数据可能仍处于写入状态,因此会查询旧数据。试试这个

db.get('project').push({
    name: pjName,
    url: pjURL,
    explanation: pjtExplanation,
    imgurl: pjImgURL
}).write().then(() => {
    console.log(db.get('project'));
    console.log(db.get('project').value());
});