Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Node.JS中寻找从MongoDB读取的帮助大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些存储在MongoDB中的记录我试图通过Node.JS http服务器将它们输出到浏览器窗口.我认为我是一个很好的部分,但我错过了一些小东西,使它不能实际工作.

下面的代码使用Node-mongo-native连接到数据库.

如果周围有人可以帮助我在节点中进行最后几次连接,我真的很感激.公平地说,我确信这只是一个开始.

var sys  = require("sys");
var test = require("assert");
var http = require('http');

var     Db              = require('../lib/mongodb').Db,Connection      = require('../lib/mongodb').Connection,Server          = require('../lib/mongodb').Server,//BSON          = require('../lib/mongodb').bSONPure;
        BSON            = require('../lib/mongodb').bSONNative;

var     host = process.env['MONGO_NODE_DRIVER_HOST'] != null ? process.env['MONGO_NODE_DRIVER_HOST'] : 'localhost';
var     port = process.env['MONGO_NODE_DRIVER_PORT'] != null ? process.env['MONGO_NODE_DRIVER_PORT'] : Connection.DEFAULT_PORT;

sys.puts("ConnecTing to " + host + ":" + port);

function PutItem(err,item){
    var result = "";
    if(item != null) {
            for (key in item) {
                    result += key + '=' + item[key];
            }
    }
    // sys.puts(sys.inspect(item))  // debug output
    return result;
}

function Readtest(){
    var db = new Db('mydb',new Server(host,port,{}),{native_parser:truE});
    var result = "";
    db.open(function (err,db) {
            db.collection('test',function(err,collection) {
                    collection.find(function (err,cursor){
                            cursor.each( function (err,item) {
                                    result += PutItem(err,item);
                            });
                    });
            });
    });
    return result;
}

http.createServer(function (req,res) {
  res.writeHead(200,{'Content-Type': 'text/plain'});
  res.end("foo"+Readtest());
}).listen(8124);
console.log('Server running on 8124');

资料来源:
– mongo连接代码
https://github.com/christkv/node-mongodb-native/blob/master/examples/simple.js
– 节点. http代码:nodejs.org

编辑正确的代码

感谢下面的Mic让我朝着正确的方向前进.对于任何感兴趣的人,更正的解决方案是:

function ReadTest(res){
    var db = new Db('mydb',{native_parser:truE});
    var result = "";
    res.write("in readtest\n");
    db.open(function (err,db) {
            res.write("@L_772_13@ open\n");
            db.collection('test',collection) {
                    res.write("in collection\n");
                    collection.find(function (err,cursor){
                            res.write("found\n");
                            cursor.each( function (err,item) {
                                    res.write("@L_772_13@ open\n");
                                    var x = PutItem(err,item);
                                    sys.puts(X);
                                    res.write(X);
                                    if (item == null) {
                                            res.end('foo');
                                    }
                            });
                    });
            });
    });
}

http.createServer(function (req,res) {
    res.writeHead(200,{'Content-Type': 'text/plain'});
    res.write("start\n");
    ReadTest(res);
}).listen(8124);
console.log('Server running on 8124');

解决方法

我的猜测是你返回结果,编写响应,并在从db获取任何内容之前关闭连接.

一种解决方案是将响应对象传递到您实际需要的位置,例如:

function readTest(res) {
    db.open(function (err,db) {
        db.collection('test',collection) {
            collection.find(function (err,cursor) {
                res.writeHead(200,{'Content-type' : 'text/plain'});
                cursor.each( function (err,item) { res.write(item); });
                res.end();
     ...

当然,你也应该处理错误并尽量避免嵌套太多层次,但这是一个不同的讨论.

大佬总结

以上是大佬教程为你收集整理的在Node.JS中寻找从MongoDB读取的帮助全部内容,希望文章能够帮你解决在Node.JS中寻找从MongoDB读取的帮助所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。