【问题标题】:Node not connecting to Mongo more than once节点未多次连接到 Mongo
【发布时间】:2015-10-23 00:40:36
【问题描述】:

按照本教程尝试设置 MEAN 服务器: https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/

使用这个 git: https://github.com/Hitman666/MEAN_MVC_3rdTutorial

我第一次连接到数据库,它工作正常。 CTRL+C 后再次运行“节点服务器”,出现此错误:

c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\base.js:246 抛出消息; ^ TypeError:无法在 c:\mean2\node_modules\mongoose\node_modules 读取 processResults (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1581:31) 处未定义的属性“长度” \mongodb\lib\mongodb\db.js:1619:20 在 c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1157:7 在 c:\mean2\node_modules\mongoose\node_modules \mongodb\lib\mongodb\db.js:1890:9 在 Server.Base._callHandler (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\base.js:448:41) 在 c :\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\server.js:481:18 在 MongoReply.parseBody (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\responses\mongo_reply .js:68:5) 为空。 (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\server.js:439:20) 在空时发出 (events.js:107:17)。 (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connection_pool.js:201:13)

相关代码块:

development.js:

var port = 1337;

module.exports = {
    port: port,
    db: 'mongodb://localhost/todos'
};

猫鼬.js:

var config = require('./config'),
mongoose = require('mongoose');

module.exports = function() {
    var db = mongoose.connect(config.db);
    return db;
};

config.js:

module.exports = require('./env/' + process.env.NODE_ENV + '.js');

server.js:

process.env.NODE_ENV = process.env.NODE_ENV || 'development';

var config = require('./config/config'),
    mongoose = require('./config/mongoose'),
    express = require('./config/express'),

var db = mongoose(),
    app = express();

app.listen(config.port);

module.exports = app;
console.log(process.env.NODE_ENV  + ' server running at http://localhost:' + config.port);

另外值得注意的是,如果我 db.dropDatabase() 然后再次“节点服务器”,它工作正常。

【问题讨论】:

  • 您是否在 MongoDB 中设置了任何奇怪的东西?像 maxClients: 1 或类似的东西?否则:如果你 killall node 再试一次会怎样?
  • 我没有在我的 MongoDB 上设置任何东西。试图通过教程来解决问题,所以我没有更改任何设置。我还应该添加我在 Windows 8.1 上。
  • 我的意思是在这个回复中添加更多内容。我执行了“taskkill /IM node.exe”,它说找不到该进程。

标签: node.js mongodb mean-stack


【解决方案1】:

问题是“npm install mongoose”没有安装正确版本的 Mongoose。将 package.json 编辑为最新版本后,一切正常。

【讨论】:

    【解决方案2】:

    在终止应用程序之前,我使用这个小 sn-p 关闭了与 MongoDB 的连接:

    process.on('SIGINT', function() {
        mongoose.close(function(){
            process.exit();
        });
    });
    

    【讨论】:

    • 我这样做并添加了一个 console.log 以确保它通过该功能;但是,我仍然遇到同样的问题。
    • 我已经有一段时间没有搞砸了,但是使用 .disconnect 而不是 .close 可以解决它吗?我记得不得不摆弄那些......但自从我进入那部分代码以来已经有一段时间了。 (对不起...)
    • 所以我玩了很多次,尝试了很多很多变化,这就是我想出的。当我取出“process.on ...”部分时,它会连接,然后立即断开连接。然后我可以成功地“节点服务器”(但是,它会立即断开连接)。 close 函数运行控制台命令,所以我不知道为什么它在 CTRL + C 上不起作用。
    • 可悲的是,在解决了类似问题后,我唯一的反应是“我感受到了你的痛苦”。祝你好运!如果您获得完整的解决方案,请将其发布为您问题的答案。我有兴趣看到它(并为我自己主演,供以后参考)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 2019-11-29
    • 2014-09-15
    • 2021-06-20
    相关资源
    最近更新 更多