草庐IT

javascript - node.js - 捕获 Mongoose 回调中抛出的错误

在我的Controller中,我有一个调用另一个函数的端点函数,期望从被调用的函数中获得结果或捕获错误。exports.createInvites=(req,res)=>{//code...try{generateInvitations(requirements,data=>{res.status(200).json({data});});}catch(err){console.log(`caughttheerror:${err}`);returnres.status(500).json(err);}}在调用的函数generateInvites中,我使用mongoose将生成的对象保存

javascript - 在回调函数范围外检索 MongoDB 结果

我试图在回调函数的范围之外获取由MongoClientfindOne方法(在r参数中)检索的文档。我怎样才能做到这一点?也许我对Node.js的MongoDB驱动程序的使用方法不合适。functionloadUser(name){varresult={};functionconnection(err,db){assert.equal(null,err);functioncallback(err,r){assert.equal(null,err);db.close();result=r;//Thisdoesnotwork}db.collection('users').findOne({'

node.js - 如何强制for循环等待回调在nodejs中完成?

entry.find(function(err,user){for(vari=0;i所以我在这里要做的是等待每个for循环完成,然后再调用异步可分配函数。Assigntable是对数据库进行更改的回调。我现在遇到的问题是,由于在for循环完成后调用了assigntable的回调,所有用户都将被分配到表1。但我想要的是:将第一个分配给表1->在下一个循环中分配表检测到表1已分配->用户2分配给表2,依此类推。我该怎么做?编辑:Assgintable是一个递归调用,它在回调中编辑数据库。更新将基于上一个循环生成的数据库的结果,但我在这里不相关。functionassigntable(use

javascript - 从未调用过 Mongodb 插入回调

此问题是thisone的后续问题而且我觉得问一个新问题比发表评论和发帖要好。(TL;DR他们提供了在插入集合时获取_id的解决方案)我已经尝试过使用.jsbash脚本或在控制台中它似乎不起作用:varlatest;db.collec.insert({test:"yes"},function(err,newDoc){latest=newDoc[0]._id;});变量不会改变。在控制台中,命令返回WriteResult({"nInserted":1})但是latest仍然是void,在js中它的值和以前一样。没有Node.js有没有办法获取id?我应该切换到Node.js吗?我的bash

javascript - forEach() 中的回调

当上传单个图像时,即uploadResults只有一个对象-以下工作正常。上传多张图片时不会。图像对象在数据库中正确创建,但相册对象有重复图像。例如,如果我上传image1和image2,album.Images应该只是[image1,image2]而不是[image1,image2,image2]。我认为问题是foreach中回调的时间,但不能完全确定问题所在。uploadResults.forEach(function(uploadedItem){varimage=newImages({imageUrl:uploadedItem.url,});image.save(function

node.js - NodeJS Batch Mongo 操作,等待回调

我正在尝试对mongo数据库执行批处理操作。这个想法是遍历每个用户,然后找到正在学习同一类(class)或就读同一所大学的其他用户,并存储有关这些匹配项的信息。一切都包含在这样的循环中:User.find({},function(err,doc){doc.forEach(function(candidate){//otherfindoperationsinhere...}}其中“用户”是在网站上注册的用户的集合。我遇到的问题是forEach循环正在为每个用户分派(dispatch)所有回调,而我想等待forEach循环中的所有回调完成,然后再转到下一个文档。我试过使用异步,但我似乎无法

node.js - 如何从 MongoDB 回调和 Node 中删除 "result"、 "insertedCount"和 "insertedIds"并仅获取一个数据库对象数组?

我刚刚更新了Node,之前有一段时间没有这样做,不得不重新安装MongoDB和其他模块。以前我在使用find()函数时只会获得一个数据库对象数组,而现在我获得了一个包含“results”、“ops”、“insertedCount”和“insertedIds”的JSON对象。我不记得最初设置它时我可能做了什么,或者这可能只是Mongo的一个恼人的变化,但我想回到只获取数据库对象数组的状态,这样我就不必测试我的整个服务器。我尝试了几个npm解析模块都没有成功。这是一个例子:{result:{ok:1,n:1},ops:[{user:'595ee2fec2924e5435dfdd2d'},_

javascript - Mongoose model.save 回调问题

我正在通过一本书学习Node.js。我没有照原样处理和使用书中的示例代码,而是使用基础并在自己的代码中重用作为学习练习。我有这个用于创建新用户的代码,我会复制我认为相关的代码。我期望发生的是user.register使用model.register并根据用户是否创建并相应地发送响应接收true或falseapp.js捕获帖子app.post('/user',users.actions.register);user.js注册varregister=function(req,res){if(req.body.username===''||req.body.email===''||req.b

node.js - Mongoose 种群 - 回调与执行

在Node.js/Mongoose/Mongo上是SomeModel.findOne({_id:id},callback).populate('ref')相当于SomeModel.findOne({_id:id}).populate('ref').exec(callback)“ref”是单个文档(不是数组)。问题是使用第一种语法,“子”文档在调用回调时随机不会填充。 最佳答案 我不知道内部结构,但我会说它们不一样。第一个可能是这样做的:找到文件使用文档调用回调填充ref(这是通过单独的查询完成的)第二个可能是这样做的:找到文件填充引

javascript - Node.JS:MongoDB 更新回调返回带有函数代码的结果

我有一个脚本更新MongoDB集合并在其回调函数中记录错误和结果对象。除了结果对象包含一大块代码之外,每个都工作正常,我不知道如何摆脱它。我正在使用nativeMongoDBnode.jsdriver,版本2.0.46。代码片段:varfind={_id:id},set={$set:{dt:now}};myCollection.update(find,set,function(err,result){if(err)logger.error(JSON.stringify([find,set]),err.toString());elselogger.verbose(result);})当更