您好,运行此代码时,在浏览器上没有任何结果。文档显示在我的控制台中,但现在显示在浏览器中。我可以知道错误在哪里。我是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();
})
})
};
答案 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
})
})
};