gpt4 book ai didi

javascript - 无法在回调中监听/处理 EventEmitter

转载 作者:可可西里 更新时间:2023-11-01 09:15:53 25 4
gpt4 key购买 nike

使用 Mongoose与 MongoDB 一起工作,但是当尝试处理查询回调中发出的事件(即使用 Formidable 解析分段上传)时,运气不好。知道原因或修复方法吗?

模型

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);

最佳答案

您能否确认表单解析是独立工作的,即如果您省略了对数据库 (findOne) 的调用?

如果是这样,您可能想尝试设置您的 form.on() 回调并运行 form.parse() beforeUser.findOne() 的调用?表单对象可以根据请求在内部监听 “数据” 事件,这些事件在 findOne() 的回调被触发时已经发生。

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

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);

关于javascript - 无法在回调中监听/处理 EventEmitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9091982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com