Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在回调中侦听/处理EventEmitter_Javascript_Node.js_Mongodb_Mongoose_Multipart - Fatal编程技术网

Javascript 无法在回调中侦听/处理EventEmitter

Javascript 无法在回调中侦听/处理EventEmitter,javascript,node.js,mongodb,mongoose,multipart,Javascript,Node.js,Mongodb,Mongoose,Multipart,使用来处理MongoDB,但是当尝试处理查询回调中发出的事件(即使用解析多部分上载)时,没有运气。知道为什么吗,或者是解决办法 模型 服务器 是否可以确认表单解析是独立工作的,即如果忽略对数据库的调用(findOne) 如果是这样,您可能希望尝试设置form.on()回调,并在调用User.findOne()之前运行form.parse()?表单对象可能正在内部侦听请求中的“data”事件,这些事件在从findOne()发出回调时已经发生 您还可以尝试使用request.pause()和requ

使用来处理MongoDB,但是当尝试处理查询回调中发出的事件(即使用解析多部分上载)时,没有运气。知道为什么吗,或者是解决办法

模型

服务器


是否可以确认表单解析是独立工作的,即如果忽略对数据库的调用(findOne)

如果是这样,您可能希望尝试设置
form.on()
回调,并在调用
User.findOne()
之前运行
form.parse()
?表单对象可能正在内部侦听请求中的
“data”
事件,这些事件在从
findOne()
发出回调时已经发生

您还可以尝试使用request.pause()和request.resume()(hackier):


解析是独立工作的,表单对象显然缺少这些“数据”事件。关于如何在表单中使用User.findOne回调返回的结果的建议。on('field')回调?有很多方法可以处理这个问题,例如,每次调用
“field”
回调时,您可以将数据推送到数组中,以便缓冲所有需要处理的数据。然后将事件处理程序添加到
表单中。在(“end”)
上进行处理,表单中需要的所有数据都保存在数组中,以备使用。。此外,在这里使用step.js或async.js之类的库可能会使这更容易。
var mongoose = require('mongoose');

function User() {
  return mongoose.model('users', new mongoose.Schema({
    username: String,
    email: String,
    name: String
  }));
}

exports = module.exports = User;
/** Example HTTP server
  */

var http = require('http'),
    mongoose = require('mongoose'),
    formidable = require('formidable'),
    models = require('./models');

mongoose.connect('mongodb://localhost/test');

var User = new models.User();
var form = new formidable.IncomingForm();

http.createServer(function(request, response) {
  User.findOne({ username: 'wayoutmind' }, function(error, user) {
    // Does not print to console, Event listener blackhole?
    form.on('field', function(name, value) {
      console.log(name + ':' + value);
    });
    form.parse(request);
  });
}).listen(1337);
http.createServer(function(request, response) {
  request.pause();
  User.findOne({ username: 'wayoutmind' }, function(error, user) {
       form.on('field', function(name, value) {
       console.log(name + ':' + value);
     });
     request.resume();
     form.parse(request);
  });
}).listen(1337);