[英]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.