我对Node.js很新,并且传递了JSON数据,但有人可以让我深入了解为什么我不需要在这里做JSON.stringify。
module.exports.getBusinessOffers = function(req, res, next) {
var business = req.params.businessname;
console.log('Get All OFFERS from' + business);
//Gets all offers from couchDB as JSON
var url = 'http://localhost:5984/offers/_design/offers/_view/business?startkey="' + business + '"&endkey="' + business + '"';
request.get(url, function(err, response, body) {
if(err) {
return next(new restify.InternalServerError('Error communicating with CouchDB'));
}
if(response.statusCode === 200) {
var resp = JSON.parse(body);
var allOffers = [];
resp.rows.forEach(function(i) {
var offer = {
title: i.value.offer_title,
description: i.value.offer_description,
businessname: i.value.businessname,
last_modified: i.value.last_modified
};
allOffers.push(offer);
});
var offers = {
total_Offers: resp.rows.length,
offers: allOffers
};
res.send(offers);
} else if(response.statusCode === 404) {
return next(new restify.InternalServerError('No Offers Found'));
};
});
};
正如你在底部看到的那样 - res.send(offers)是什么回送但是这会返回有效的JSON数据,但它仍然是一个JavaScript对象?
数据来自couchDB,我拿出我需要的东西,然后把我需要的东西放到offer变量中。
希望你能帮助我理解:)
感谢。
答案 0 :(得分:1)
node.js响应对象没有send
方法,因此我假设您正在使用Express。
当参数是数组或对象时,Express以JSON表示
响应
您可以传递代码和正文,也可以传递一个正文。 body可以是Object,Buffer或Error。当你调用send()时,restify会弄清楚如何格式化响应(参见上面的内容协商),并且这样做。