本人也是前端爱好者,最近在用Node.js和MongoDB搭建自己的网站,本地运行很好。
按照BAE上修改链接方式后,访问网站出错,提示:
可以访问 http://siblim.duapp.com/ 查看错误如下 Error: Error connecting to database: failed to connect to [127.0.0.1:27017] at null. (/home/bae/app/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:553:74) at EventEmitter.emit (events.js:106:17) at null. (/home/bae/app/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15) at EventEmitter.emit (events.js:98:17) at Socket. (/home/bae/app/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10) at Socket.EventEmitter.emit (events.js:95:17) at net.js:441:14 at process._tickCallback (node.js:415:13)
但是本地链接代码,个人已经修改了。怎么还会链接failed to connect to [127.0.0.1:27017]
//db.js 链接代码修改如下 var Db = require(‘mongodb’).Db; var Connection = require(‘mongodb’).Connection; var Server = require(‘mongodb’).Server; //数据库连接信息host,port,user,pwd var db_name = ‘MOOEovYoNmLKlMCIfRdt’; // 数据库名,从云平台获取 var db_host = ‘mongo.duapp.com’; // 数据库地址 var db_port = ‘8908’; // 数据库端口 var username = ‘。。。’; // 用户名(API KEY) var password = ‘。。。’; // 密码(Secret KEY)
module.exports = new Db(db_name, new Server(db_host, db_port, {}), {w: 1});
//post.js 调用代码如下 var mongodb = require(’./db’); var moment = require(‘moment’);//时间模块 var formidable = require(“formidable”);//处理POST数据模块
function Post(username, post, target_path, time){ this.user = username; this.post = post; this.img = target_path; if (time) { this.time = time; }else{ this.time = new moment().format(“YYYY-MM-DD HH:mm:ss”); //console.log(moment().format()); }
}; module.exports = Post;
Post.prototype.save = function save(callback) {
// 存入 MongoDB的文档
var post = {
user: this.user,
post: this.post,
img: this.img,
time: this.time,
};
mongodb.open(function(err,db){
if(err) return callback(err);
//读取post集合
db.authenticate("。。。", “。。。”, function(err, result) {
if (err) {
db.close();
console.log(err);
return;
}
db.collection(‘posts’,function(err, collection){
if (err) {
mongodb.close();
return callback(err);
};
//为user属性添加索引
collection.ensureIndex(‘user’);
//写入post文档
collection.insert(post, {safe: true}, function(err, post){
mongodb.close();
callback(err, post);
});
});
});
});
};
Post.get = function get(username, callback){
mongodb.open(function(err, db){
if (err) {return callback(err)};
db.authenticate("。。。", “。。。”, function(err, result) {
if (err) {
db.close();
console.log(err);
return;
}
db.collection(‘posts’, function(err, collection){
if(err) {
mongodb.close();
return callback(err);
};
//查找user属性为username的文档,如果username是null则匹配全部
var query = {};
if (username) {
query.user = username;
};
collection.find(query).sort({time: -1}).limit(30).toArray(function(err, docs){
mongodb.close();
if(err) {
callback(err,null);
};
//封装posts为post对象
var posts = [];
docs.forEach(function(doc, index){
var post = new Post(doc.user, doc.post, doc.img,doc.time);
posts.push(post);
});
callback(null,posts);
});
});
});
});
}
数据库的地址要改为bae的mongodb提供给你的地址。还有,bae的mongo貌似不支持长连接
bae提供的地址就是mongo.duapp.com,官方连接方式就是长连接的
我用的很正常,这个明显是你的bae上配置不正常,连的依然是127.0.0.1 我现在更喜欢node.js了,同样的功能我的上一个原型使用的python+django+mysql,现在使用node.js+express+monogoose。node.js版本可以支持250个模拟并发,而以前只支持50个不到
谢谢啦。我是新手,可不可以把您部分的app.js代码,数据库连接代码,和少量数据库代码贴给我看看,学习学习…
非常感谢。。。
遇到了和楼主一样的问题。请问楼主你这个问题怎么解决?
===================== 这个问题解决了。是一位内在使用connect-mongo来做存储session的时候,也需要链接数据库。这里需要填入你的配置。
但是同时,出现了新的问题。正在解决当中。
感谢,我也是新手,以后多多交流~~ 我的问题还没解决,正在弄~~
对的,是你说的问题,我也解决了。但是遇到了 访问的时候 无法加载,是不是 百度服务器的问题。。
@FuGardenia 你bae最后是不是 显示 “no open connections” 不知道你怎么解决的啊
@racyily BAE的问题 系统发布之后不到一会就挂了 显示500 no open connections 求帮忙啊 谢谢
一般这种环境都是不支持长连接的
你看看这篇文章,我就是按照这篇文章解决的! http://cnodejs.org/topic/53be80a229bac3c80f09d6a9