MongoDB回调错误“ TypeError:无法读取未定义的属性'Symbol(Symbol.iterator)'”

时间:2019-07-12 07:51:28

标签: node.js mongodb callback babeljs

我正在使用Node.js和MongoDB创建一个用户管理系统,当前正在创建一个微服务来处理CRUD查询。我已经编写了微服务,但是在测试时发现findOneAndUpdate函数和findOneAndDelete函数收到相同的错误。我没有收到findOne函数或insertOne函数的错误。

这是错误:

C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\utils.js:132
      throw err;
      ^

TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
    at _iterableToArrayLimit (C:\Users\user\Documents\project\source\services\users\source\index.js:15:131)
    at _slicedToArray (C:\Users\user\Documents\project\source\services\users\source\index.js:11:66)
    at C:\Users\user\Documents\project\source\services\users\source/index.js:61:113
    at result (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\utils.js:410:17)
    at session.endSession (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\utils.js:398:11)
    at ClientSession.endSession (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb-core\lib\sessions.js:134:41)
    at executeCallback (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\utils.js:395:17)
    at handleCallback (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\utils.js:128:55)
    at executeCommand (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\operations\collection_ops.js:558:12)
    at handleCallback (C:\Users\user\Documents\project\source\services\users\node_modules\mongodb\lib\utils.js:128:55)

我调查了这些函数,它们似乎还在回调函数中返回了第三个status参数。我也尝试将回调函数与第三个参数一起使用,并收到相同的错误。

我还认为问题可能出在Babel和ES6。我尝试使用function( ) {代替( ) => {,但仍然收到相同的错误。

我也尝试过使用没有回调的函数,它们可以正常工作。但是,我想异步使用MongoDB。

// this one works
collection.insertOne(request.user, (error, document) => {
    return callback(null, document);
});

// these two do not
collection.findOneAndUpdate({ _id: ObjectId(request.user._id) }, { $set: request.$set }, (error, document) => {
    return callback(null, document);
});

collection.findOneAndDelete({ _id: ObjectId(request.user._id) }, (error, document) => {
    return callback(null, document);
});

request变量和callback函数来自微服务库。但是,该错误专门表明MongoDB回调是任何问题的根源。

回调函数应返回错误(如果有的话)以及查询结果,如MongoDB文档中所述。

https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/

0 个答案:

没有答案