node.js - node.js 的 MongoDB 驱动程序,事务 API,错误“client.startSession() 不是函数”
问题描述
我正在尝试使用 node.js 的 MongoDB 驱动程序来创建事务。这是我的代码。
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://someone:someone@somecluster.xxxyy.mongodb.net/myFirstDatabase?retryWrites=true&w=majority";
function dbConnect () {
callback = callbackTrans;
MongoClient.connect (uri, callback);
};
function callbackTrans (err, db) {
if (err) throw err;
var session = MongoClient.startSession();
console.log ('so far so good');
};
dbConnect ();
当然,这是不完整的代码。但是当我运行这个程序时出现以下错误......
D:\NodeJS\node_modules\mongodb\lib\topologies\replset.js:339
throw err;
^
TypeError: MongoClient.startSession is not a function
at callbackTrans (D:\NodeJS\transaction.js:11:31)
at D:\NodeJS\node_modules\mongodb\lib\utils.js:693:5
at D:\NodeJS\node_modules\mongodb\lib\mongo_client.js:227:7
at connectCallback (D:\NodeJS\node_modules\mongodb\lib\operations\connect.js:366:5)
at D:\NodeJS\node_modules\mongodb\lib\operations\connect.js:602:5
at ReplSet.connectHandler (D:\NodeJS\node_modules\mongodb\lib\topologies\replset.js:336:9)
at Object.onceWrapper (events.js:422:26)
at ReplSet.emit (events.js:315:20)
at D:\NodeJS\node_modules\mongodb\lib\core\topologies\replset.js:796:18
at processTicksAndRejections (internal/process/task_queues.js:75:11)
我错过了什么/做错了什么?谢谢。
解决方案
基本上,MongoClient.startSession();
是无效的,因为startSession()
它不是静态方法,MongoClient
而是应该在客户端实例本身上调用的实例方法。MongoClient.connect()
将在回调中传递客户端实例,您应该使用它来调用startSession()
它。
尝试这个:
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://someone:someone@somecluster.xxxyy.mongodb.net/myFirstDatabase?retryWrites=true&w=majority";
function dbConnect () {
callback = callbackTrans;
MongoClient.connect (uri, callback);
};
function callbackTrans (err, client) {
if (err) throw err;
var session = client.startSession();
console.log ('so far so good');
};
dbConnect();
参考:
推荐阅读
- ebay-api - 由于缺少项目特定类型,无法在 eBay API 上添加项目
- kubernetes - 使用 Kubernetes 和 Rancher 构建本地数据库
- dataframe - 如何使用 Julia DataFrames 命名由 do-form 转换产生的列?
- javascript - Angular等待所有订阅完成
- css - 尝试缩小 tailwindcss 时出现错误消息
- android - 如何使用导航架构组件进行动态导航
- python - TypeError: hook() 接受 3 个位置参数,但给出了 4 个
- laravel - Laravel API 自定义关联列
- flutter - 每当谷歌 Play 商店有新版本时,Flutter 应用程序不会自动更新
- python - 我的函数没有正确计算所有行的平均值