SQLite数据库写入硬盘后执行代码

时间:2017-12-26 08:33:58

标签: javascript node.js sqlite

我有以下示例代码(在node.js服务器上),它应该将数据插入sqlite表,然后运行将sqlite数据库文件复制到另一个目录的子进程。问题是复制的版本不包含新插入的数据。当我在执行命令之前设置超时时一切正常但我更喜欢使用回调或事件。

_msgTableView = [[UITableView alloc] init];
_msgTableView.backgroundColor = [UIColor blackColor];
_msgTableView.delegate = self;
_msgTableView.dataSource = self;
_msgTableView.separatorInset = UIEdgeInsetsZero;
_msgTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_msgTableView.showsVerticalScrollIndicator = NO;
[self.view addSubview:_msgTableView];

1 个答案:

答案 0 :(得分:3)

正如文件所述关于近距离功能:

  

数据库#接近([回调])   关闭数据库。

     

回调(可选):如果提供,则在成功关闭数据库或发生错误时将调用此函数。第一个>参数是一个错误对象。如果为null,则关闭成功。如果未提供回调并且发生错误,则将在数据库对象上发出以错误对象作为唯一参数的错误事件。如果关闭成功,则无论是否提供回调,都会发出不带参数的close事件。

你应该能够在关闭数据库后提供关闭函数的回调,如果我理解你的代码应该是这样的:

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('test.db');

const exec = require('child_process').exec;

db.serialize(function() {
    var val = Date.now()/1000;
    db.run("INSERT INTO test (val) VALUES (?);", [val]);
    db.close(() => { exec('/bin/cp -rf /path0/test.db /path1/') });
});

引用是here