Javascript 节点mariasql查询赢得';t terminate/mariadb.end()函数是否等待所有查询
我正在使用节点运行以下脚本:Javascript 节点mariasql查询赢得';t terminate/mariadb.end()函数是否等待所有查询,javascript,node.js,mariadb,Javascript,Node.js,Mariadb,我正在使用节点运行以下脚本: var mariadb = require("mariasql"); var db = new mariadb(); db.connect({ host: "localhost", user: "root", password: "bus1708v2.0", db: "test" }); db.query("INSERT INTO Persons (LastName, FirstName) VALUES ('Some', 'Name
var mariadb = require("mariasql");
var db = new mariadb();
db.connect({
host: "localhost",
user: "root",
password: "bus1708v2.0",
db: "test"
});
db.query("INSERT INTO Persons (LastName, FirstName) VALUES ('Some', 'Name')")
.on("result", function(result){
result.on("end", function(info){
console.log(info);
console.log(result);
});
});
它成功地插入到数据库中,但我必须按ctrl-c终止脚本
更新
我刚意识到我需要
db.end();
最后
在这种情况下,db.end()是否会等待所有查询完成 试着打电话
db.end();
写入数据库后,驱动程序将保持连接打开,从而防止Node.js关闭。所以你的代码应该是
db.query("INSERT INTO Persons (LastName, FirstName) VALUES ('Some', 'Name')")
.on("result", function(result){
result.on("end", function(info){
console.log(info);
console.log(result);
db.end();
});
});
或者,只需调用
db.end()将>编码到示例的最后一行。根据文档,驱动程序仅在所有排队命令运行完毕后才关闭连接。Oh。我在你的答案之前找到了db.end(),但我没有想到把它放在那里。我想这是有道理的。如果我把它放在db.query调用之后呢?它会一直阻塞直到所有的查询都完成吗?我不知道,这是真的。但为了确保所有内容都正确编写,我会尝试将其调用推迟到所有回调都运行。好的,从文档中:end()=>一旦队列中的所有查询都执行完毕,就会关闭连接。
,因此,如果只将其放在文件的最后一行,就可以了。文档中的所有示例都可以做到这一点。谢谢。如果你不能把它放在最后,那就糟了。如果你需要做10个查询,你必须嵌套它们,这看起来很可怕。更不用说处理从json文件生成的未知数量的查询是多么困难和不直观(这实际上就是我正在尝试做的)。感谢您比我更透彻地阅读文档:)我只是在看示例,甚至没有注意到最后的api文档。我更新了我的答案以匹配您更新的问题。