node.js - 如何使用 node.js 在 sqlite 数据库中的多个条目的值中使用更新方法
问题描述
我是 sqlite 和 node.js 的新手,想知道是否可以在 db.run 命令中处理多个条目。假设您有多个这样的条目:
{"message":"success",
"data":[
{"id":1,"name":"user_delete",
"email":"user_delete@example.com",
"password":"a66abb5684c45962d887564f08346e8d",
"status":"pending_deleted"},
{"id":3,"name":"mikey",
"email":"mikey@example.com",
"password":"b18f58b85575fc3fb8b9189445d1071f",
"status":"pending_deleted"}]}
每次用户的状态为“pending_deleted”并将状态更改为已删除时,我都想使用 UPDATE 方法。我看到了它在一个条目上使用但没有在多个条目上使用的示例。
我在一个 js 文件中设置我的数据库,如下所示:
let sqlite3 = require('sqlite3').verbose()
let md5 = require('md5')
const DBSOURCE = ":memory:"
let db = new sqlite3.Database(DBSOURCE, (err) => {
if (err) {
// Cannot open database
console.error(err.message)
throw err
}else{
console.log('Connected to the SQLite database.')
db.run(`CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name text,
email text UNIQUE,
password text,
status text,
CONSTRAINT email_unique UNIQUE (email)
)`,
(err) => {
if (err) {
// Table already created
console.log("Table already created");
}else{
// Table just created, creating some rows
var insert = 'INSERT INTO user (name, email, password, status) VALUES (?,?,?,?)'
db.run(insert, ["user_delete","user_delete@example.com",md5("admin123456"), "pending_deleted"])
db.run(insert, ["user_no_delete","user@example.com",md5("user123456"), "active"])
db.run(insert, ["mikey","mikey@example.com",md5("mikey123"), "pending_deleted"])
}
});
}
});
解决方案
我能够使用更新查询来解决这个问题,该查询检查状态值为“pending_deleted”的每种情况
app.post("/account_service/pending_to_deleted", (req, res, next) => {
db.run(
`UPDATE user SET
status = "deleted"
WHERE status = "pending_deleted"`,
function (err, result) {
if (err){
res.status(400).json({"error": res.message})
return;
}
res.json({
message: "success",
})
});
});
推荐阅读
- python - AttributeError:“_thread._local”对象没有属性“值”
- react-native - 如何在 VS Code 集成终端中运行 Metro Bundler 而不是运行新窗口?
- c - 为什么这种对 file_operations 的取消引用会以这种方式发生?
- django-models - 在 Django Polls 教程中:获取“NameError: name 'Question' is not defined”
- javascript - 将 Unicode 符号 (") 更改为等效的 html 符号 (")
- php - 我可以在保持子目录动态的同时重写 URL 吗?(PHP)
- c - 提供一系列数字 (C) 的函数存在问题。为什么?
- ios - 我在 Swift 中将 int 转换为 String 时遇到问题
- avplayer - iOS 13+ 应用程序的 AVAudioPlayer AVPlayer AVQueuePlayer MPMusicPlayerController MPRemoteCommandCenter MPNowPlayingInfoCenter 之间的区别
- swift - 发出不调用 sqlite3_bind 的 SQLite INSERT 是否“错误”?