簡體   English   中英

Node.js域在連接時顯示來自數據庫的事件消息

[英]Node.js Domain to display event messages from db on connection

我是Node.js域的新手,正在對其進行試驗。 我試圖讓mainDomain在成功的數據庫上顯示一條消息。 現在,沒有錯誤,當我啟動express.js時,一切運行正常。 但是,在成功建立數據庫連接后,該消息未按原樣顯示:

db.js:

var mongoose = require( 'mongoose' );
var EventEmitter = require('events').EventEmitter;
var ee = new EventEmitter();


function connectDatabase() {
    var dbURI = 'mongodb://localhost/database';
    mongoose.connect(dbURI);

    mongoose.connection.on('connected', function () {
        ee.emit('message', 1, 2, 3);
       // console.log('Mongoose default connection open to ' + dbURI);
    });

    mongoose.connection.on('error',function (err) {
        console.log('Mongoose default connection error: ' + err);
    });

    mongoose.connection.on('disconnected', function () {
        console.log('Mongoose default connection disconnected');
    });

    process.on('SIGINT', function() {
        mongoose.connection.close(function () {
            console.log('Mongoose default connection disconnected through' +
                        ' app termination');
            process.exit(0);
        });
    });
}   
module.exports.connectDatabase = connectDatabase;

app.js:

var express = require('express');
var morgan = require('morgan');
var fs = require("fs");
var createDomain = require("domain").create;
var app = express();

app.use(morgan('dev'));
app.use(express.static(__dirname + '/app/static/views'));
app.use(express.static(__dirname + '/app/static'));
app.use(express.static(__dirname + '/app/images'));
app.use(express.static(__dirname + '/app'));

var apiScript = require('./app/scripts/api_scripts/call_all_api.js');
var db = require(__dirname + '/app/data/db.js');

var mainDomain = new createDomain();

mainDomain.run(function () { 
    db.connectDatabase(); 
    mainDomain.on('message', function(msg) {
        console.log('yoyoyoyo');
    });

});

mainDomain.run(function () {
    mainDomain.on('error', function(er) {
        console.log('error, but oh well', er.message);
    });

    var server = app.listen(9000, function() {
            console.log('Listening on port %d', server.address().port);
    });
});

更新:如果我使用ee.emit('error')而不是ee.emit('message', 1, 2, 3);可以捕獲錯誤ee.emit('message', 1, 2, 3); 我不明白為什么我不能發出ee.emit('message');

您需要替換以下行:

mainDomain.on('message', function(msg) {
    console.log('yoyoyoyo');
});

在他們

db.on('message', function(msg) {
    console.log('yoyoyoyo');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM