任何人都可以帮助我如何使用async和await功能管理此代码。我的要求是插入100个数据然后mongo数据库断开连接。
var faker = require('faker');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/shopping');
mongoose.Promise = global.Promise;
var Product = require('../models/product');
async function insertDocument(){
for(var i=0;i<=100;i++){
try{
var product = new Product({
imagePath:faker.image.image(),
title:faker.commerce.productName(),
description:faker.lorem.paragraph(),
price:faker.commerce.price()
});
product.save();
}catch (err) {
console.log(err);
}
}
}
insertDocument().then(function () {
// mongoose.disconnect();
});
答案 0 :(得分:3)
product.save()
返回一个承诺。如果要连续插入100个文档(一个接一个),请使用await
。如果您想要并行插入100个文档,则不需要async
并且应该使用Promise.all
async function insertDocument(){
for(var i=0;i<=100;i++){
try{
var product = new Product({
imagePath:faker.image.image(),
title:faker.commerce.productName(),
description:faker.lorem.paragraph(),
price:faker.commerce.price()
});
await product.save();
}catch (err) {
console.log(err);
}
}
}
function insertDocument(){
let promises = [];
for(var i=0;i<=100;i++){
var product = new Product({
imagePath:faker.image.image(),
title:faker.commerce.productName(),
description:faker.lorem.paragraph(),
price:faker.commerce.price()
});
promises.push(product.save());
}
return Promise.all(promises);
}