gpt4 book ai didi

node.js - Mongodb 和 Node.js 连接错误

转载 作者:可可西里 更新时间:2023-11-01 10:31:29 26 4
gpt4 key购买 nike

我是服务器端的新手。我刚开始使用 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://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');

运行我的代码时,它第一次运行,但是当我尝试刷新页面时出现此错误并且没有任何响应:

connection error: { [Error: Trying to open unclosed connection.] state: 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);
});
}

关于node.js - Mongodb 和 Node.js 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com