Node.js 事件发射器在回调中不工作
我试着运行这段代码,一切正常,但事件发射器不工作。我只想从路由器检查数据是否重复或保存 database.jsNode.js 事件发射器在回调中不工作,node.js,express,Node.js,Express,我试着运行这段代码,一切正常,但事件发射器不工作。我只想从路由器检查数据是否重复或保存 database.js var mongoose = require( 'mongoose' ); var auths = require('../model/hiren-conf'); var EventEmitter = require("events").EventEmitter; var ee = new EventEmitter(); exports.create = function(req)
var mongoose = require( 'mongoose' );
var auths = require('../model/hiren-conf');
var EventEmitter = require("events").EventEmitter;
var ee = new EventEmitter();
exports.create = function(req){
var instance = new auths.auth();
if(req.body.tag && req.body.email){
auths.auth.findOne({ 'tag' : req.body.tag , 'email' : req.body.email}, function(err , duplicate){
if (!err){
if(!duplicate){
instance.tag = req.body.tag;
instance.email = req.body.email;
instance.save(function(err){
if(!err) console.log('Saved');
});
ee.emit('Save');
} else {
console.log("Duplicate");
ee.emit('Duplicate');
};
} else console.log(err);
});
}
};
routes/new.js
var express = require('express');
var router = express.Router();
var database = require('./database.js');
var EventEmitter = require("events").EventEmitter;
var ee = new EventEmitter();
router.get('/', function(req, res){
res.render('newdata', {
title: 'Add new data'
})
});
router.post('/', function(req, res){
database.create(req);
ee.on('Save', function(){
console.log('data saved')
});
ee.on('Duplicate', function(){
console.log('Duplicate data')
});
res.end();
});
您正在两个不同的文件中创建不同的ee对象
router.post('/', function(req, res){
database.create(req, ee);//try passing the ee object and use it to emit the event in db.js
ee.on('Save', function(){
console.log('data saved')
});
ee.on('Duplicate', function(){
console.log('Duplicate data')
});
res.end();
});
嗯,我不确定您想要完成什么,但是目前POST函数注册了两个监听器,它们将在控制台上输出数据。这不管用,还是你想做点别的?