gpt4 book ai didi

node.js - 带有 promise 的 Node 程序没有完成

转载 作者:IT老高 更新时间:2023-10-28 12:29:02 26 4
gpt4 key购买 nike

我终其一生都无法弄清楚为什么这没有完成:

var pmongo = require('promised-mongo');
var db = pmongo('mongodb://localhost/builder');
var block_id = '538d097bbb12479d0e9f70ab';

var collection = db.collection('block');
collection.findOne({_id:db.ObjectId(block_id)})
.then(function(result) {
console.dir(result);
}).done();

它基本上只是挂起。 findOne 返回一个 promise ,我正在调用完成。奇怪的是,当我在 then 中关闭数据库(即 db.close())时,它完成了。

我试图最终通过 express 处理这个问题,所以我真的不想关闭数据库。有什么诀窍???

最佳答案

MongoDB 连接旨在保持持久性。您创建其中一个(或其中一个池),然后在整个应用程序中重复使用该连接。

这个持久的网络连接会让node.js进程保持活跃,所以当你想关闭node进程时,你必须手动关闭连接。这是数据库连接的常见模式,如果您连接到 MySQL,也会发生同样的事情。

在 express.js 应用程序中,只需在文件顶部建立一次连接,然后为每个请求重新使用该连接。

关于node.js - 带有 promise 的 Node 程序没有完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045414/

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