猫鼬 5 异步连接问题



据此,在初始连接期间处理错误的正确方法是:

try {
  await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
} catch (error) {
  handleError(error);
}

不幸的是,这会导致语法错误:

await mongoose.connect(mongoConnectionString, { useNewUrlParser: true });
       ^^^^^^^
SyntaxError: Unexpected identifier

当我删除await时,代码执行没有任何问题。当我用谷歌搜索SyntaxError: Unexpected identifier with await时,我发现当await与非异步函数一起使用时会发生这种情况。但这没有任何意义,因为 Mongoose 从版本 5 开始就使用 asnyc connect。此外,以下异步代码也正常工作:

mongoose.connect(mongoConnectionString, {
       useNewUrlParser: true
     })
       .then(() => console.log('MongoDB Connected'))
       .catch(err => console.log(err));
   });

package.json中的依赖关系: "mongoose": "^5.6.0">

index.js

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const mongoConnectionString = `mongodb://${process.env.MONGO_DB_USER}:${process.env.MONGO_DB_PW}@mongodb4711:27017/visitor-ips`;
initialMongoConnect(mongoose, mongoConnectionString);
function initialMongoConnect(mongoose, mongoConnectionString) { 
   try {
     await mongoose.connect(mongoConnectionString, { useNewUrlParser: true });
   } catch (error) {
     handleError(error, mongoose, mongoConnectionString);
   }
  console.log('Initial connect to MongoDB successful');
}
function handleError(error, mongoose, mongoConnectionString) {
   console.log('Error on initial connection: ' + error);
   // wait 3 seconds and try to do the initial connect again
   setTimeout(function() {initialMongoConnect(mongoose, mongoConnectionString)}, 3000);
}

那么这里的await有什么问题呢?

猫鼬异步操作,它支持承诺运行 默认情况下异步 它不需要等待函数,因为它在成功使用时是异步的 然后(((=>"连接时应该做什么(如果它错误使用 catch(((=>"错误发生时发生了什么(,你应该使用关键字来使用 await 在启动想要作为异步函数运行的函数时异步运行示例const a=async function(({等待///它是什么 等待需要支配

最新更新