节点未多次连接到 Mongo
Node not connecting to Mongo more than once
正在按照本教程尝试设置 MEAN 服务器:
https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/
使用这个 git:
https://github.com/Hitman666/MEAN_MVC_3rdTutorial
我第一次连接到数据库时,它工作正常。在 CTRL+C 之后,然后再次 运行 "node server",我得到这个错误:
c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\base.js:246 抛出消息; ^ TypeError: 无法读取 属性 'length' of undefined at processResults (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1581:31) at c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1619:20 at 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) at emit (events.js:107:17) at null。 (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'
};
mongoose.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() 然后 "node server",它工作正常。
在终止应用程序之前,我使用这个小片段关闭了与 MongoDB 的连接:
process.on('SIGINT', function() {
mongoose.close(function(){
process.exit();
});
});
问题是 "npm install mongoose" 没有安装正确版本的 Mongoose。将 package.json 编辑为最新版本后,一切正常。
正在按照本教程尝试设置 MEAN 服务器: https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/
使用这个 git: https://github.com/Hitman666/MEAN_MVC_3rdTutorial
我第一次连接到数据库时,它工作正常。在 CTRL+C 之后,然后再次 运行 "node server",我得到这个错误:
c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\base.js:246 抛出消息; ^ TypeError: 无法读取 属性 'length' of undefined at processResults (c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1581:31) at c:\mean2\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1619:20 at 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) at emit (events.js:107:17) at null。 (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'
};
mongoose.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() 然后 "node server",它工作正常。
在终止应用程序之前,我使用这个小片段关闭了与 MongoDB 的连接:
process.on('SIGINT', function() {
mongoose.close(function(){
process.exit();
});
});
问题是 "npm install mongoose" 没有安装正确版本的 Mongoose。将 package.json 编辑为最新版本后,一切正常。