Mongo DB和Node.js连接错误
我对服务器端非常陌生。我刚从node.js和mongodb开始 示例代码:Mongo DB和Node.js连接错误,node.js,mongodb,mongoose,httpserver,Node.js,Mongodb,Mongoose,Httpserver,我对服务器端非常陌生。我刚从node.js和mongodb开始 示例代码: var http = require('http'); var mongoose = require('mongoose'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'}); mongoose.connect('mongodb://l
var http = require('http');
var mongoose = require('mongoose');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'});
mongoose.connect('mongodb://localhost/bookmarks');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
// console.log('Running');
var Users = mongoose.model('users', { name: String, lastname: String, yas: Number, yer:String });
Users.find().lean().exec(function(err,users) {
// console.log(JSON.stringify(users));
var sonuc=JSON.stringify(users);
console.log(sonuc);
res.end(sonuc);
});
});
}).listen(1337,'127.0.0.1');
当运行我的代码时,它第一次工作,但当我尝试刷新页面时,我收到此错误,没有响应:
连接错误:{[错误:尝试打开未关闭的连接。]状态:1}
每次请求都会打开一个新的数据库连接。这里有一种方法可以重新排列代码,创建一个连接和一个
Users
对象,稍后在请求处理程序中使用:
var http = require('http');
var mongoose = require('mongoose');
// we want Users to be in the global scope here, not in a function
// that way different functions can both see the same variable
var Users = null;
mongoose.connect('mongodb://localhost/bookmarks');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
// By placing Users and createServer inside the db.once('open') callback,
// we wait till mongo is ready before letting the http handler query users:
db.once('open', function(){
console.log('Running');
// now overwrite the already defined Users variable:
Users = mongoose.model('users', { name: String, lastname: String, yas: Number, yer:String });
http.createServer(function (req, res) {
findUsers(function(err, results){
if(err){
res.writeHead(500);
res.end();
} else {
res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'});
res.end(results);
};
});
}).listen(1337,127.0.0.1);
});
function findUsers(callback){
Users.find().lean().exec(function(err,users) {
// console.log(JSON.stringify(users));
var sonuc=JSON.stringify(users);
console.log(sonuc);
//res.end(sonuc);
callback(err, sonuc);
});
}