Tag: callback

从callback中返回一个值,或者在node.js中的特定callback之外访问它?

//geoSpacialRepository.js var geoSpatialRepository = {}; var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/repository'); var Schema = mongoose.Schema; var LocationSchema = new Schema({ type: String, coordinates: [Number,Number] }); var Location = mongoose.model('locations', LocationSchema); var db = mongoose.connection; geoSpatialRepository.find = function(){ var query = Location.find({}, function(error, data){}); query.exec(function(err, data){ console.log("DATA ************************** "); console.log (JSON.stringify(data)); }); } exports.geoSpatialRepository = geoSpatialRepository; 我写的地方console.log […]

一般callback使用每个节点orm2

我用express来使用node-orm2。 我想删除数据库中的多行使用删除。 毕竟删除,我想打电话callback,当我确定一切都完成了。 var idArray = [{id: 2}, {id: 5}]; 我试过了 : Person.find({or:idArray}).each().remove().save(function(){ res.writeHead(301, {Location: '/home'}); res.end(); }); 但我被告知:不能使用删除未定义。 所以我必须做我的方法删除每个内部 Person.find({or:idArray}).each(function(element){ element.remove(); }) .save(function(){ setTimeout(function(){ res.writeHead(301, {Location: '/home'}); res.end(); },2000); }); 但是在每次删除完成之前调用callback保存 。 所以目前我使用超时,但我希望有一个更好的方法。 谢谢您的回答。

如何杀死node.js中的child_process – req.on close

我试图杀死subprocess,当“requst.on('close'”被调用时,但是这个callback中的child.pid总是指向最近的请求。问题是:我怎么能匹配child.pid到请求? 谢谢 var query_script = "query.py" var express = require('express'); var app = express(); var spawn = require('child_process').spawn; app.get('/:version/query', function(request, response) { child = spawn('python, ['query.py', request.originalUrl]) console.log("start pid=" + child.pid + ": " + request.originalUrl) request.on('close', function () { console.log("1: current pid=" + child.pid) //child.kill('SIGTERM'); }) child.stdout.pipe(response) }); app.listen(3000); console.log('Listening on port 3000…');

一个实际的代码示例应该如何构造以避免callback地狱?

我一直在JavaScript代码中遇到callback地狱,我相信这是由我以前的经验主要是纯同步/线程Java代码。 我通过例子很好地学习,但到目前为止,还没有find一个很好的“之前和之后”的callback地狱的例子,在我发现它发生的许多情况下解决。 如果某种灵魂能够告诉我下面提供的代码应该是什么样的结构,以避免callback地狱(如果需要的话,使用asynchronous库等),我将不胜感激,因为我相信一个实际的例子会使我和其他人阅读这个问题。 在这一段时间里,我仍然无法find一个好的方法,可以调用原始的callback函数,也可以保留代码的逻辑。 任何帮助,如果很好的赞赏,谢谢你的时间。 🙂 代码:var fs = require('fs'); var zlib = require('zlib'); var defaultOptions = require('./options/defaults'); function FeatherDB (sourcePath, options) { if (options === undefined) { // use defaults if options not provided options = defaultOptions; } else { // ensure all keys are supplied for (key in defaultOptions) { if (options[key] === […]

在nodejs(asynchronous)循环和callback中寻找适当的模式

我已经阅读了几篇文章和文章,但是我不太明白。 我在Mongoose模型中有一段代码,主要负责邀请人们参与项目。 鉴于一些被邀请者,我期待看看他们是否在数据库中,如果没有,我会继续创build它们并更新被邀请者列表中的ID。 jslint抱怨循环,我正在努力与callback(和正确的总体模式,当你有一个循环,与数据库保存callback。显然我想要发生的是循环完全完成,任何新用户都添加到数据库,ID是在原始哈希(受邀者)更新,然后callback发生。 ProjectSchema.methods.invite = function invite(invitees, callback) { var User = mongoose.model('User'); var emails = _.pluck(invitees, 'email'); // loop through invited hash to see if we already have those users in the db User.find({ 'email': { $in: emails}}, function (err, users) { for (var invited = 0; invited < invitees.length; invited++) { var […]

TypeScript中的Mongoose方法范围

我有一个关于在Mongoose方法的callback函数中的对象范围的问题。 我的员工有“地址”。 当你调用这个“方法”时,它会查找地址模型中的地址。 使用Javascript: employeeSchema.methods.getAddresses = function (callback) { addressModel.find({ _id: { $in: this.addresses } }, function (err, obj) { callback(obj); }); }; 我想把所有的东西都打出来,并且在函数中的'this'范围有问题。 范围在对象本身上,但所有示例都显示“this”。 这在TypeScript中不起作用,因为它认为它是主类。 打字稿: employeeSchema.methods.getAddresses = (callback) => { addressModel.find({ _id: { $in: this.addresses } }, (err, obj) => { callback(obj); }); }; 我有同样的问题与validation: accountSchema.path('email').validate(function (email, callback) { if (this.isNew || this.isModified('email')) […]

了解asynchronouscallback

我是新来的asynchronous编程,我很难得到这个概念。 请帮忙!!! 我拿出一个简单的例子: for(var i = 1; i <= 10; i ++){ setTimeout(function(){ 的console.log(ⅰ); },1000); } 我想要的是按升序打印索引,但由于setTimeout强制asynchronous操作​​,我得到的最后一个索引打印了10次。 我明白为什么发生这种情况 无论我尝试了什么(我不认为我的误解需要阐述),我没有解决这个愚蠢的谜语… 我显然缺less一些基本的。 请帮我弄清楚。

Node.jscallbackhellp

尽pipe无尽的SOpost,教程,video和操作方法,我似乎无法使我简单的callback工作。 如果有人能让我知道我在哪里,这将有助于弥补我对callback的理解上的空白。 矿是如此简单,这是令人尴尬的。 基本上我试图从mongo(通过mongoose)返回到调用函数的查询结果。 调用函数: team1 = '2638'; var t = doesTeamExist('team1', function(team){ console.log(team); }); 处理function: function doesTeamExist(id, res){ Team.findOne(id).populate('team').exec(function(err,team){ console.log(team); res.team = team; }); }; 我知道,正如我的控制台显示,相应的团队是在doesTeamExist返回 { _id: 545930dc14a8e3bc9ffab864, id: '1532', name: 'TEAM1', alt_id: '2638', created: Fri Nov 07 2014 13:41:43 GMT-0700 (MST) } 但我从调用函数得到一个undefined。 任何人都可以看到这个洞?

Javascriptcallback函数 – Node.js

我有两个function, 1) download(uri, filename, callback) – >将图像下载到特定位置 2) twitterPost(filename) – >推文的形象 我需要这样做asynchronous – 所以我打电话twitterPost图像完成下载后,但是我每次都收到此错误: throw new Error('File path does not exist: ' + media); ^ Error: File path does not exist: Imgs/18478-wrt1114.jpg 现在我明白了,这是因为图像没有下载而出现,但是在closurespipe道之后看到callback函数是没有意义的。 这是我的两个函数的代码: function download(uri, filename, callback) { request.head(uri, function(err, res, body) { request(uri).pipe(fs.createWriteStream(filename)).on('end', callback); }); }; 和 function twitterPost(filename) { var twitterRestClient = […]

页面不返回结果

我有节点js +expression4个问题。 我试图从login.js调用index.js中的函数,并打印出一个答案,但它甚至没有给我一个错误的原因。 控制台日志给了我想要在控制台中,但它不会在页面上呈现。 index.js: var express = require('express'); var router = express.Router(); var login = require('./login.js'); /* GET home page. */ router.get('/', function(req, res) { res.render('index', { title: 'Express' }); }); /* Check login status */ router.get('/login', function(req, res) { var response = login.logintest(); res.send(response); }); module.exports = router; login.js: /* LOAD all requires […]