MongoDB驱动程序,用于节点.js,事务API,错误"client.startSession() is not a function"



我试图使用MongoDB驱动程序的node.js,创建一个事务。这是我的代码。

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:NodeJSnode_modulesmongodblibtopologiesreplset.js:339
throw err;
^
TypeError: MongoClient.startSession is not a function
at callbackTrans (D:NodeJStransaction.js:11:31)
at D:NodeJSnode_modulesmongodblibutils.js:693:5
at D:NodeJSnode_modulesmongodblibmongo_client.js:227:7
at connectCallback (D:NodeJSnode_modulesmongodbliboperationsconnect.js:366:5)      
at D:NodeJSnode_modulesmongodbliboperationsconnect.js:602:5
at ReplSet.connectHandler (D:NodeJSnode_modulesmongodblibtopologiesreplset.js:336:9)
at Object.onceWrapper (events.js:422:26)
at ReplSet.emit (events.js:315:20)
at D:NodeJSnode_modulesmongodblibcoretopologiesreplset.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();

引用:

  1. connectCallback
  2. <
  3. startSession方法/gh>

您必须调用回调的db参数的startSession方法,如果连接成功,这就是包含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, db) {
if (err) throw err;
var session = db.startSession();
console.log ('so far so good');
};
dbConnect ();

最新更新