Mongoose ORM 异步等待
Posted
技术标签:
【中文标题】Mongoose ORM 异步等待【英文标题】:Mongoose ORM async await 【发布时间】:2018-06-11 03:22:14 【问题描述】:任何人都可以帮助我如何使用异步和等待功能管理此代码。我的要求是插入 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();
);
【问题讨论】:
【参考方案1】: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);
【讨论】:
以上是关于Mongoose ORM 异步等待的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose 中的 Model.findById() - 异步/等待 [重复]