node.js - SQLite:选择和删除

标签 node.js mongodb sqlite

我在 raspberry-pi 中有一个 sqlite3 数据库,我有一个将数据发送到 mongo db 服务器的脚本。一旦我将数据发送到 mongoDB,我就想删除该行。但我无法做到这一点,这是以下代码

var sqlite3 = require('sqlite3').verbose();
var sqlDB = new sqlite3.Database('Table23.db');
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://192.168.0.87:27017';
var winston = require('winston');
var id_1;
winston.remove(winston.transports.Console);
winston.add(
    winston.transports.File, {
    filename: 'error.log',
    level: 'info',
    json: true,
    timestamp: true,
    handleException: true
  }
);    
sqlDB.serialize(function() {
     sqlDB.each("SELECT * FROM Table23", function(err, row) {
        var data = {
            type: row.TYPE,
            id: row.ID,
            place: row.Place
        };
    var id = data.id;
    id_1 = id;
        MongoClient.connect(url, function(err, db) {
            if (err) {
                winston.error('Unable to connect'+ err);
            } else {
                console.log('Connection successful');
                var collection = db.collection('testdb');
                collection.insert([data], function(err, result) {
                    if (err) {
                        winston.error(err);
                    } else {
                        console.log('Inserted %d documents into the "Testdb" collection. The documents inserted with "_id" are:', result.length, result);
                    }
                    db.close();
                });
            }
            });

        sqlDB.run("DELETE FROM Table23 WHERE id=(?)",[id_1], function(err) {
            if(err){
                winston.error(err);
            }
            else{
                console.log("Successful");
            }

        });
    });
});
sqlDB.close();

当我运行这个时,我得到一个“errno”:21,“code”:“SQLITE_MISUSE”

最佳答案

使用each函数的完成回调来执行下一个命令。然后删除完成后关闭数据库。

var sqlDB = new sqlite3.Database('./abcd')
var id_1;

sqlDB.serialize(() => {
    sqlDB.serialize(() => {
        var n = 0;
        sqlDB.each("SELECT * FROM Table23", function(err, row, i) {
            let data = {
                type: row.TYPE,
                id: row.ID,
                place: row.Place
            };
            var id = data.id;
            id_1 = id;
        }, ()=> {

            sqlDB.run("DELETE FROM Table23 WHERE id=(?)", id_1, function(err) {
                if(err){
                    console.log(err)
                }
                else{
                    console.log("Successful");
                }
                sqlDB.close();
            });

        });
    });
});

关于node.js - SQLite:选择和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35008591/

相关文章:

mongodb - 如何在不创建 Mongoose 模型的情况下将 GraphQL 与 Mongoose 和 MongoDB 结合使用

r - 如何从具有不同维度的两个数据框中提取特定行并生成多个 .csv 文件?

ruby-on-rails - Ruby datetime 属性值未保存在 SQLite DB 中

java - 表 Ord 没有名为 _id 的列

javascript - 在 Node.JS 中上传文件

javascript - Jest 单元测试函数抛出错误

javascript - 如何验证两个加拿大邮政编码之间的距离

javascript - NodeJs/Express 获取 ID//按下的提交按钮的名称

arrays - MongoDb 过滤数组

c# - DateTime ToLocalTime 失败