【问题标题】:Mongoose ORM async awaitMongoose ORM 异步等待
【发布时间】: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();

    });

【问题讨论】:

    标签: express mongoose mongoose-schema


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 2021-10-18
      • 2020-11-05
      • 2019-03-25
      • 2019-03-09
      • 1970-01-01
      • 2023-03-12
      • 2016-07-07
      相关资源
      最近更新 更多