首页 > 解决方案 > 我的 sqlite 项目在添加到表时不断抛出错误

问题描述

我的服务器上有这段代码,但每当它运行时,它总是给我一个错误。当我在 Chrome 中进入开发者控制台时,它只是说错误,但没有更多信息可以帮助我找出原因。我是从模板中制作的,并且我一遍又一遍地进行了更改,但我无法弄清楚它为什么停止工作。任何帮助表示赞赏。

这是代码:

// endpoint to add a dream to the database
app.post("/addDream", (request, response) => {
  console.log(`add to dreams ${request.body.name} ${request.body.price} ${request.body.email} ${request.body.description} ${request.body.photoID} ${request.body.date}`);

  // DISALLOW_WRITE is an ENV variable that gets reset for new projects
  // so they can write to the database
  if (!process.env.DISALLOW_WRITE) {
    const cleansedName = cleanseString(request.body.name);
    const cleansedPrice = cleanseString(request.body.name);
    const cleansedEmail = cleanseString(request.body.name);
    const cleansedState = cleanseString(request.body.name);
    const cleansedDescription = cleanseString(request.body.name);
    const cleansedphotoID = cleanseString(request.body.name);
    const cleansedDate = cleanseString(request.body.name);

    db.run("INSERT INTO Dreams (name, price, email, description, photoID, date) VALUES (cleansedName, cleansedPrice, cleansedEmail, cleansedState, cleansedDescription, cleansedphotoID, cleansedDate);", error => {
      if (error) {
        response.send({ message: "error!" });
        console.log("error")
      } else {
        response.send({ message: "success" });
        console.log("success")
      }
    });
  }
});

这是在我更改之前有效的模板的原始代码:

// endpoint to add a dream to the database
app.post("/addDream", (request, response) => {
  console.log(`add to dreams ${request.body.dream}`);

  // DISALLOW_WRITE is an ENV variable that gets reset for new projects
  // so they can write to the database
  if (!process.env.DISALLOW_WRITE) {
    const cleansedDream = cleanseString(request.body.dream);
    db.run(`INSERT INTO Dreams (dream) VALUES (?)`, cleansedDream, error => {
      if (error) {
        response.send({ message: "error!" });
      } else {
        response.send({ message: "success" });
      }
    });
  }
});

如果有帮助,这里是完整项目的链接:https ://glitch.com/edit/#!/beta2-droneswap?path=server.js%3A215%3A0

感谢您抽出宝贵时间,再次感谢您的帮助。


编辑:启动时发生了另一个错误,但我修复了它,它仍然无法正常工作。当前错误发生在我尝试添加列表时。我很确定它与第 166 行附近的 sql 代码有关。

这是我认为错误所在的当前代码:

// endpoint to add a dream to the database
app.post("/addDream", (request, response) => {
  console.log(
    `add to dreams ${request.body.name}, ${request.body.price}, ${request.body.email}, ${request.body.state}, ${request.body.description}, ${request.body.photoID}, ${request.body.date}`
  );

  // DISALLOW_WRITE is an ENV variable that gets reset for new projects
  // so they can write to the database
  if (!process.env.DISALLOW_WRITE) {
    const cleansedName = cleanseString(request.body.name);
    const cleansedPrice = cleanseString(request.body.price);
    const cleansedEmail = cleanseString(request.body.email);
    const cleansedState = cleanseString(request.body.state);
    const cleansedDescription = cleanseString(request.body.description);
    const cleansedphotoID = cleanseString(request.body.photoID);
    const cleansedDate = cleanseString(request.body.date);

    db.run(
      `INSERT INTO Listings (name, price, email, state, photoID, date) VALUES (cleansedName, cleansedPrice, cleansedEmail, cleansedState, cleansedDescription, cleansedphotoID, cleansedDate)`,
      error => {
        if (error) {
          response.send({ message: "error!" });
          console.log("error");
        } else {
          response.send({ message: "success" });
          console.log("success");
        }
      }
    );
  }
});

标签: javascriptmysqlsqlsqlite

解决方案


因此,我重新混合了您的示例并在控制台错误日志中添加了更多内容,以便更好地查看错误发生的位置,并且看起来您的数据库创建未成功完成。我认为这是因为您已经在第 165 行注释掉了db.run调用中的内容。如果您不希望该代码运行,您也应该db.run在注释块中包含该调用,否则它无法运行并且会抛出那个初始错误。希望这可以帮助!


推荐阅读