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