据此,在初始连接期间处理错误的正确方法是:
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(({等待///它是什么 等待需要支配