所以我有一个非常简单的应用程序,我正在构建使用Mongo,Express和Node进行练习。
我收到错误process.nextTick(function(){throw err;});
当我在GET请求期间尝试在成功条件中使用res.json(docs)
时,似乎发生了错误。但是,我可以console.log(docs)
并查看JSON。
开发环境
的package.json:
...
"dependencies": {
"body-parser": "^1.15.0",
"express": "^4.13.4",
"mongojs": "^2.3.0"
}
...
app.js(api):
var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('catalog', ['products']);
app.get('/', function(req,res){
res.send('It works, indeed'); // this is working
});
app.get('/products', function(req,res){
res.send('Products Works'); // this is displaying correctly on the page
console.log('Fetching products');
db.products.find(function(err,docs){
if(err){
res.send(err);
}
else{
console.log('Sending Products');
console.log('response docs', docs); // returns the correct JSON
res.json('stuff sent'); // Throws error
}
});
});
app.listen(3000);
console.log('Server is running on port 3000');
我不确定为什么这会失败。我能够控制日志记录JSON,因此知道数据存在并且在响应中可用。只是不确定为什么res.json(docs)
不起作用。
答案 0 :(得分:1)
您正在调用隐式回调两次
res.send('Products Works'); // this is displaying correctly on the page
和
res.json(docs);
删除(可能是第一个)