문제

I try to run this code, everything goes well but event emitter is not working . I just want to check from the router that data is duplicate or saved .

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();
});
도움이 되었습니까?

해결책

You are creating different ee object in two different files.

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();
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top