gpt4 book ai didi

node.js - 如何关闭两个mongodb与 Node 的连接

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

现在,我需要从一个数据库找到“_id”,然后使用这个“_id”从其他数据库查找数据并更新第一个数据库,但我无法关闭数据库连接。

var Db = require('mongodb').Db,
MongoClient = require('mongodb').MongoClient,
Server = require('mongodb').Server;

var db1 = new Db('test_1', new Server('localhost', 27017));
var db2 = new Db('test_2', new Server('192.68.1.10', 27017));

db1.open(function(error, db1){
var coll_1 = db1.collection("test_1", {strict:true}, function(error, coll_1){
coll_1.find().toArray(function(error, items){
for (var i=0; i<items.length; ++i){
db2.open(function(error, db2){
var coll_2 = db2.collection("test_2", {strict:true}, function(error, coll_2){
coll_2.find().toArray(function(error, values){
coll_1.update(...);
})
})
db2.close();
})
}
})
db1.close();
})
})

但是程序无法close(),怎么办,我可以更新数据并退出!

最佳答案

不要像您一样为每个请求创建连接。最初创建一次到两个数据库的连接。然后,当您从 db1 首次启动 find 时,创建一个函数来计算已更新的项目数量,并在每次从 db2 更新另一个项目时更新该计数器。当该计数器等于第一个列表中的项目后,然后关闭数据库。

通常,您在这里做了一些非常奇怪的事情,尤其是在第二次调用中进行另一个查找然后更新。也许您只需要使用 multi: true 参数来更新多个项目或类似内容。

此外,如果您需要首先将第二个数据库更新为准确状态,请考虑使用 mongoexport/mongoimport 或 mongodump/mongorestore 以更有效的方式在数据库之间传输大量数据。

关于node.js - 如何关闭两个mongodb与 Node 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18867026/

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