gpt4 book ai didi

javascript - 为什么使用 Bookshelf.js 插入脚本会挂起?

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:46 24 4
gpt4 key购买 nike

我有点困惑为什么 Node.js 脚本不退出:

// myscript.js
var Model = bookshelf.Model.extend({
tableName: 'models'
});
var m = Model.forge({name: 'hello'});
m.save();
console.log("End");

但是当使用 node myscript 运行此脚本时,脚本不会退出。

  • 是什么导致脚本无法退出?
  • 模型保存后如何干净退出?

谢谢!

最佳答案

What is preventing the script from exiting?

Knex 拥有一个与数据库的连接池。尽管脚本执行结束,Knex 仍在幕后维护这些脚本,防止程序关闭。

How to cleanly exit after the model is saved?

您可以通过调用knex.destroy()来拆除所有数据库连接。您必须在查询完成后执行此操作。

// myscript.js
var Model = bookshelf.Model.extend({
tableName: 'models'
});

Model.forge({name: 'hello'}).save().then(function(model) {

console.log('model has been saved', model);

}).catch(function(error) {

// it's bad practise to omit some sort of error reporting.
console.error('something went wrong!');

}).finally(function() {

// tear down connection.
return bookshelf.knex.destroy();

}).then(function () {

// This is the actual 'end' of the program.
console.log("End");

});

关于javascript - 为什么使用 Bookshelf.js 插入脚本会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36412566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com