MongoDb在控制台中显示结果,但在浏览器中不显示结果

时间:2020-02-07 11:16:49

标签: javascript node.js mongodb

您好,运行此代码时,在浏览器上没有任何结果。文档显示在我的控制台中,但现在显示在浏览器中。我可以知道错误在哪里。我是nodejs的新手,也正在关注这本书,但是效果不佳。 API.JS

    var http = require('http');
    var url = require('url');
    var database = require('./database');

    function findAllProducts(resourceName,req,res){
            database.find('Orderbase','order','{}',(err,documents)=>{
            res.writeHead(200,{'Content-Type':'application/json'});
            res.end(JSON.stringify(documents));
        });
    };

    var server = http.createServer((req,res)=>{
        parsedURL = url.parse(req.url,true);
        switch(parsedURL.pathname)
        {
            case '/api/order/':
                if (parsedURL.query.id) 
                {
                    findProductById(id,req,res);
                }
                else
                {
                    findAllProducts(req,res);
                }   
            break;
            default:
            res.end(JSON.stringify("you shell not pass!"));
        }

    });
    server.listen(8080);
    console.log('Up, running and ready for action!');

    database.js

    var MongoClient = require('mongodb').MongoClient;
    var assert = require('assert');
    var connect = function (databaseName, callback) {
    var url = 'mongodb://localhost:27017/' + databaseName;

MongoClient.connect(url, (error, database)=> {
        assert.equal(null, error);
        console.log("Successfully connected to MongoDB instance!");
        callback(database);
       });
};
    exports.find = (databaseName, collectionName, query)=> {
       connect(databaseName, (database)=> {
       var collection = database.collection(collectionName);
       collection.find(JSON.parse(query)).toArray(
          (err, documents)=> {
          assert.equal(err, null);
          console.log("MongoDB returned the following documents:");
          console.dir(documents);
          database.close();
        })
      })
    };

2 个答案:

答案 0 :(得分:0)

@Arslan您可以尝试 res.json({documents:documents})而不是res.end(JSON.stringify(documents));

如果无法正确回答,则;

var document = JSON.Stringify(documents); res.json({documents:document})

答案 1 :(得分:0)

我通过调试代码找到了灵魂,database.js中缺少一个回调,这是两个问题

exports.find = (databaseName, collectionName, query,callBack)=> { //callback was missing
    connect(databaseName, (database)=> {
        var collection = database.collection(collectionName);
        collection.find(JSON.parse(query)).toArray((err, documents)=> {
           assert.equal(err, null);
           callBack(documents); // callback was missing
           database.close();
           return; // return was missing 
        })
    })
};