Tag: callback

Node.jscallback混乱 – MongoDB的findOne()的第三个参数:为什么这是允许的?

我很困惑JavaScriptcallback。 我不明白他们的逻辑和他们为什么工作。 下面的代码是正确的,但是怎么可能呢? app.get('db').collection("foo").findOne({ bar: req.query.baz }, { _id: 0 }, (err, doc) => { if (err) { res.json({ status: 503, message: "DB fault" }); return; } res.json({ status: 200, qux: doc }); }); 这是MongoDB的findOne()的定义: db.collection.findOne(查询,投影) 但在上面的代码中,超过两个parameter passing,所以我会期望一个错误。

Mongoose在节点中的“model.findById”之后做一些事情

我正在循环使用mongoose的节点中的用户集合。 我想将每个用户的数据保存在Excel文件中。 Usr.findById(usrID, function(err, foundTagestipp){ sheet1.set(1, counter, 'some Userdata'); } 问题是我想保存整个集合中的文件。 那么我什么时候知道最后一个用户何时完成? 我可以以某种方式给callback,或者我可以以某种方式从mongoose完成时的信息? 我希望这是清楚我的意思是…对不起的问题抱歉

将callback转换为Promise

我想转换下面的callEndPointWrapper返回一个Promise而不是callback。 我已经testing了下面的代码,但在等待Promise for callEndpointWrapper()请求超时。 我是否错过了下面的任何东西? (在debugging的时候,我看到请求超出了代码的下面,等待Promise: return (function callEndpoint(callback): any { 回电话: function callEndPointWrapper(): any { return function callEndpoint(callback) { try { // gRPC call client[methodName](req, options, callback); } catch (err) { callback(err); } }; } const result = yield callEndpointWrapper(); // I get the correct result from callback above (both on success or error) […]

节点JS:使用http从API返回具有callback函数的数据

我开始学习Node.js,我试图用Express框架构build一个应用程序,它将查询Coinbase API并获取比特币价格的数据。 我一直在努力,但是因为我对节点上的callback函数很陌生,所以没有任何帮助。 我能够完全查询API并获取数据,但是当它以某种方式返回价格时,它总是以“未定义”的forms返回。 我之前遇到过这个问题,那就是没有使用callback函数的简单查询,所以我认为这是因为缺lesscallback函数。 不过,我现在仍然遇到同样的问题,我尝试了很多次迭代。 我似乎无法find解决scheme。 任何帮助,将不胜感激。 var url = 'https://api.coinbase.com/v2/prices/spot?currency=USD'; function makeCall (url, callback) { https.get(url,function (res) { res.on('data', function (d) { callback(JSON.parse(d)); }); res.on('error', function (e) { console.error(e); }); }); } function handleResults(results){ return Number((results.data.amount))*14.5; } console.log(makeCall(url, function(results){ handleResults(results); }));

填充位于callback函数范围之外的数组

给定一个表示项目标识符的string数组,我想遍历string,从数据库中提取项目对象,并将项目对象添加到数组中,该数组位于数据库callback的范围之外。 function getItemObjects(items, callback) { let returnItems = []; items.forEach((i) => { Item.getItemById(i, (err, item) => { if (err) { console.log(err); return; } else { returnItems.push(item); } }); }); callback(returnItems); } Item.getItemById()是我的Item模型中的一个函数,它从mongo数据库中获取对象。 我如何填充超出该callback函数范围的数组? 当我从getItemObjects()函数获取callback值时,值就是[]。 但是,如果我将它的值logging在for循环中,它将被正确填充。

使用导出模块将多个parameter passing给NodeJScallback

情况1: 我在我的atom项目weather.js和exmaple.js有两个文件,天气是使用导出模块导出一切到example.js和依次example.js使用require模块 我的weather.js var request = require('request'); module.exports= function(justAnothercallback) { justAnothercallback('This is from weather'); } myExample.js var fromWeather = require('./weather.js'); fromWeather(function(weather){ console.log(weather); }); 如果我做Node myExample.js输出是:这是来自天气 情景2:现在我只是在我的weather.js再传一个callback module.exports= function(justAnothercallback, SecondCallback) { justAnothercallback('This is from weather'); SecondCallback('This is second callback)'); } 而我的example.js被修改,以适应第二个callback函数! var fromWeather = require('./weather.js'); fromWeather(function(weather, anotherfunc){ console.log(weather); console.log(anotherfunc); }); 从terminal我们得到: />节点example-callback.js 这是天气未定义 /Users/NodeCourse/async/weather.js:7 SecondCallback('This is […]

Node.js重复监听器问题

我是node.js的新手,很难掌握事件监听器/发射器的dynamic。 我正在尝试为典型的“新闻源”应用设置一个简单的长轮询监听器。 我可以使用下面的代码注册和发送事件给听众。 我的问题是,每发生一个事件,它被推送到客户端多个(两个或更多!)次。 var http = require('http'), events = require('events'), url = require('url'); var event_emitter = new events.EventEmitter(); http.createServer(function(req,res) { var uriParse = url.parse(req.url,true); var pathname = uriParse.pathname; console.log(req.url); if (pathname=="//register") { var thisRes = res; event_emitter.addListener('event',function(actionid){ if (thisRes) { thisRes.writeHead(200, { "Content-Type": "text/plain" }); thisRes.end(actionid); thisRes = null; } }); } else if […]

在Javascript中通过variables作用域来维护variables

我在使用我正在创build的Node.js应用程序来处理variables作用域时遇到了困难,通常我知道variables作用域在函数中(在这种情况下,匿名callback函数)是如何工作的。 我所争论的是通过匿名callback的链/孔维护可变参数的最佳方式是什么 ? 在通常情况下,我可以将variables传递给函数,但是因为我正在使用mongoose(mongodb ORM),所以我不能在自己的variables中传递,所以不得不求助于每次更深入地定义variables回电话。 这样做的最好方法是什么? 下面是我的代码,我最终得到的variables未定义的时间,我想用他们的tweeting: var userBid = tag.user; User.find({id: userAid}, function(err, userA){ if (err) {console.log("Error getting user A for tweeting ", err)} else { var userAName = userA.twitter.screenName; var userBid2 = userBid; User.find({id: userBid2}, function(err, userB){ if (err) {console.log("Error getting user B for tweeting ", err)} else { var action = "@"+ […]

Node.js正确的callback错误句柄

让我们看看下面的代码: mongodb.js var mongo = require('mongodb') , mongodb = module.exports; mongodb.database = function(key, dbName, dbServer, callback){ var db = new mongo.Db(dbName, dbServer); db.open(function(error, connection){ // 5 if(error){ // 1 throw error; } return callback(null, connection); }); }; mongodb.collection = function(dbKey, collName, callback){ mongodb.database(dbKey, function(error, connection){ connection.collection(collName, function(error, collection){ // 2 if(error){ // 3 throw error; […]

callbackAsync.Map不工作

我对callback比较陌生,并且在获取下面的代码的过程中不成功。 我已经使用async.map函数将每个Web调用的数据返回到相应的页面。 不过,即使callback(data)之前的console.log(data) callback(data)正在返回网页的html,我的console.log(return)也会返回[ , undefined] 。 这是我的代码: var http = require("http"), fs = require("fs"), page, chap, ot, async = require("async"); ot = fs.open('ot.txt', 'w'); page = "test"; chap = 2; function getData(url, callback) { var data = ""; var options = { host: "rs.au.com", port: 80 } options.path = url; console.log("request sent to: http://" […]