下面的代码可以工作,但我只想使用async/await
,所以我的问题是:我怎么能把
cat.save().then(() => console.log('Saved in db'));
改用await
?
我使用mongoose.connection.once()
的原因是只在MongoDB连接时发送命令。如果这也可以使用await
,那么它将真的很棒=)
import mongoose from 'mongoose';
import { connectDb } from './modules/connectDb';
const { Schema } = mongoose;
const catSchema = new Schema({ name: String });
(async () => {
connectDb('testDB');
mongoose.connection.once('open', () => {
console.log('MongoDB is connected');
mongoose.connection.db.listCollections().toArray(function (err, names) {
console.log(names);
});
const catModel = mongoose.model('testColl', catSchema);
const cat = new catModel({ name: 'Zildjian' });
cat.save().then(() => console.log('Saved in db'));
});
})();
连接数据库
import mongoose from 'mongoose';
import { strict as assert } from 'assert';
import { readToml } from './readToml';
const db = readToml('./config/database.toml');
export function connectDb(
database: string = db.database,
uri: string = db.uri,
username: string = db.username,
password: string = db.password,
) {
assert(typeof uri === 'string');
assert(typeof database === 'string');
assert(typeof username === 'string');
assert(typeof password === 'string');
const URI = `mongodb+srv://${username}:${password}@${uri}/${database}?retryWrites=true&w=majority`;
try {
mongoose.connect(URI);
} catch (err) {
console.error(err);
}
}
3条答案
按热度按时间eeq64g8w1#
首先你需要使
connectDB
异步,然后git摆脱mongoose.connection.once()
,否则你需要所有的Mongoose代码都在那里。连接数据库
cygmwpex2#
请尝试以下代码并确保函数包含await关键字,该关键字应始终为async function(async关键字应在函数名之前使用)。但在您的情况下,回调函数已定义为async函数。
只需将保存部分单独更改为下面的内容,您就可以开始了。
rdrgkggo3#
为了使用
await
,你必须提供一个promise来等待。cat.save()
返回一个promise,所以这应该可以工作。然而,你也只能在async函数中使用await
,所以你也应该声明open事件的回调函数为async: