Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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
Node.js 事件发射器在回调中不工作_Node.js_Express - Fatal编程技术网

Node.js 事件发射器在回调中不工作

Node.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)

我试着运行这段代码,一切正常,但事件发射器不工作。我只想从路由器检查数据是否重复或保存

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 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函数注册了两个监听器,它们将在控制台上输出数据。这不管用,还是你想做点别的?