如何将数据同步插入mongo(Nodejs,Express)

编程入门 行业动态 更新时间:2024-10-28 14:34:25
本文介绍了如何将数据同步插入mongo(Nodejs,Express)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在使用node(express)将数据插入mongo db时遇到问题

I have a problem with inserting data to mongo db using node(express)

我的代码如下:

router.get('/data/:section/:sort', function(req, res, next) { //Deleting old data always before writing new //Image.remove().exec(); var section = req.params.section; var sort = req.params.sort; //Link to Igmur API var url = 'api.imgur/3/gallery/'+section+'/'+sort+'/1'; //1 at the end is used to get more than 60 images(gives only 60 without it) request.get({ url: url, method: 'GET', headers: { 'Authorization': 'Client-Id XXXXXXXXXXXXX' }}, function(e, r, body){ var metadata = JSON.parse(body); for(var i = 0; i<100; i++){ var image = new Image(metadata.data[i]) image.save(function(err, result){ }); };res.render('index', { title: 'SearchAPI' });});});

问题是我只能插入大约20个对象,而不是您在循环中看到的100个对象. 全部是因为节点只是在完全完成save方法之前向前跳转. 我怎样才能解决这个问题?预先谢谢你

The problem is that I get only about 20 objects inserted instead of 100 as u can see in the loop. All because node just jump forward before the save method is completely done. How can I fix this? Thank you in advance

推荐答案

使用Promise库,例如 Q

Use a promise library such as Q

您基本上需要做的是等待所有save方法完成.使用Q.all方法等待所有内容被执行.

What you basically need to do is wait for all your save methods to complete. Use the Q.all method which waits for everything to be executed.

var Q = require('q'); var promiseArr = []; for(var i = 0; i<100; i++){ var imgDefer = Q.defer(); var image = new Image(metadata.data[i]) image.save(function(err, result){ if(err)imgDefer.reject(err); else imgDefer.resolve() }); promiseArr.push(imgDefer); } Q.all(promiseArr).then (function (){ res.render('index', { title: 'SearchAPI' }); })

更多推荐

如何将数据同步插入mongo(Nodejs,Express)

本文发布于:2023-10-19 11:25:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1507352.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何将   数据同步   mongo   Nodejs   Express

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!