javascript - Node.js 域在连接时显示来自数据库的事件消息

标签 javascript node.js mongodb

我是 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');

最佳答案

您需要替换这些行:

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

关于他们

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

关于javascript - Node.js 域在连接时显示来自数据库的事件消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151229/

相关文章:

python - 在 PyMongo 中存储 datetime.date 类型

javascript - window.location 不会重定向到另一个 html 页面

javascript - Nodejs 导出的变量在第二次点击时不可重用

node.js - 为什么使用 Node 而不是 ASP.NET Core 提供 Azure 上的静态文件时速度较慢?

sql - 对于有竞争力的在线门票销售,您会建议什么数据库解决方案

javascript - 从 MongoDB 在 Node.Js 中创建一个 JSON 树

javascript - 通过 ajax 请求将数据传递给回调函数

javascript - 更改时更新 h2

javascript - 通过 cosmos 在 Meteor 中使用 npm 包 :browserify

node.js - 如何限制CSS仅在特定npm包中受影响?