Как использовать метод обновления для значений нескольких записей в базе данных sqlite, используя node.js - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в 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"}]}

Я хотел бы использовать метод UPDATE каждый раз, когда пользователь имеет статус «pending_deleted» и меняет статус на удаленный. Я видел примеры его использования для одной записи, но не для нескольких.

Я настраиваю свою базу данных в файле 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"])
            }
        });  
    }
});

1 Ответ

0 голосов
/ 06 августа 2020

Мне удалось решить эту проблему, используя запрос на обновление, который проверяет каждый случай, когда статус имел значение «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",
            })
    });
});
...