【发布时间】:2019-11-23 00:26:09
【问题描述】:
根据this,在初始连接期间处理错误的正确方法是这样的:
try {
await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
} catch (error) {
handleError(error);
}
很遗憾,这会导致 SyntaxError:
await mongoose.connect(mongoConnectionString, { useNewUrlParser: true });
^^^^^^^
SyntaxError: Unexpected identifier
当我删除await 时,代码执行没有任何问题。当我搜索SyntaxError: Unexpected identifier with await 时,我发现当await 与非异步函数一起使用时会发生这种情况。但这没有任何意义,因为 Mongoose 从版本 5 开始使用 asnyc 连接。此外,以下异步代码也可以正常工作:
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 有什么问题?
【问题讨论】:
标签: node.js asynchronous mongoose async-await