我是新来的mongo等新手,我遇到了一个我需要帮助的奇怪问题。
我创建了一个app.js文件,我正在运行节点。它侦听Web请求并调用函数以使用mongoskin驱动程序将记录写入mongodb。它有点工作,但由于某种原因它将两条记录插入mongodb而不是一条。
我意识到代码不是一个好的设计,而且它目前是硬编码的,因为我只是想了解它是如何在这个阶段加入并协同工作的。无论如何这里是我的app.js中的代码:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end( hello() );
}).listen(3000, '127.0.0.1');
console.log('Server running at http://127.0.0.1:3000/');
function hello()
{
// test mongodb and mongoskin driver
var msg = "";
var db = require('mongoskin').db('localhost:27017/mydb');
db.collection('users').insert({site: "test.com", email: "fredbloggs@gmail.com", firstname: "Fred", lastname: "Bloggs", password: "hello"},
function(err, result) {
if (err) msg = "fail";
if (result) msg="success";
});
return msg;
}
我的原始安装遇到了一些问题,并想知道我是否可能安装了mongo两次或类似的东西?是否有可能两个mongo实例正在接收我的请求并指向同一个数据库?可能有点脆弱,但任何帮助都会非常感激。
非常感谢 凯利。
答案 0 :(得分:0)
由于您刚刚开始,您可能希望使用native driver而不是mongoskin。或者至少用它来测试你的配置。 Mongoskin是基于原生驱动程序构建的,并且两者都在积极开发中,因此很容易成为版本偏斜问题的牺牲品。一旦你对本机驱动程序感到满意,并且需要未来模式的便利,那么你应该能够轻松切换到mongoskin。
答案 1 :(得分:0)
您好,这是一个简单的驱动程序与您的示例。请注意,我们使用MongoClient连接一次到db,每个对Web服务器的请求现在都将重用连接池。
var http = require('http');
, MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/mydb", function(err, db) {
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
hello(res);
}).listen(3000, '127.0.0.1');
console.log('Server running at http://127.0.0.1:3000/');
function hello(res) {
// test mongodb and mongoskin driver
db.collection('users').insert({
site: "test.com"
, email: "fredbloggs@gmail.com"
, firstname: "Fred"
, lastname: "Bloggs"
, password: "hello" }, function(err, result) {
var msg;
if(err) msg = "fail";
if(result) msg="success";
res.end(msg);
});
}
})