javascript - 函数和参数传递
问题描述
我是节点 js 及其回调方案的新手。我很难理解这段代码的某些部分,如下所述:
在 mongoUtil.js 模块中找到的代码:
var _db;
module.exports = {
connectToServer: function(callback) {
MongoClient.connect(url, function(err, client) {
_db = client.db('MyDB');
return callback(err);
});
},
};
在我的 app.js 模块中找到的代码:
mongoUtil.connectToServer(function(err, client) {
if (err) console.log(err);
...
});
问题:
i) 为什么有一个“function(err, client)”从 app.js 文件传递到 mongoUtil 文件中的 connectToServer 函数?
- 将什么值传递给 MongoClient.connect 函数的“client”参数,该参数在函数本身(client.db('MyDB'))中使用?
解决方案
将什么值传递给 MongoClient.connect 函数的“client”参数,该参数在函数本身(client.db('MyDB'))中使用?
client
参数不传递给connect函数,它是匿名函数定义中的一个参数,然后将anonymouns函数传递给connect函数。
MongoClient.connect 函数在这里定义: https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongo_client.js#L205-L220
它接受 2 个参数:一个 URL 和一个函数
它期望提供的函数也将接受 2 个参数:错误和客户端。
当 connect 函数完成它的工作时,它将调用它被传递的函数而不是返回一个值。
为什么从 app.js 文件传递到 mongoUtil 文件中的 connectToServer 函数中有一个“function(err, client)”?
看起来这个 app.js 和 mongoUtils.js 不是为了一起工作而创建的。
connectToServer
从函数导出的设置了一个模块变量,_db
而不是将客户端传递给回调,这似乎是 app.js 中的函数调用所期望的。
推荐阅读
- python - Python Pandas 中 int 变量的计时计算
- python - 在我打开 tkinter 窗口时尝试执行脚本。我希望在 tkinter 窗口上连续打印脚本的输出
- javascript - 为 javascript 应用程序创建测试数据的最佳方法是什么?
- flutter - 如何在 Widget Build 方法中回调函数?
- r - R函数不返回语料库
- swift - 创建调度队列时自动释放频率和目标是什么?
- c++ - 如何使用派生类类型数据初始化 std::shared_ptr?
- java - 我可以在 java Spring 服务器中设置运行时间吗?
- laravel - Laravel 5.8 @if(Auth::user() && Auth::user()->role_id == 2) 返回错误
- c++ - 如何解决我的链表读取不一致的问题?