Я новичок в NodeJS, и я пытаюсь подключиться к MongoDB. Я подготовил запрос и могу просмотреть вывод на сервере, переместив курсор.Но я хочу отправить вывод find () в ответ.
var cursor = db.collection('dbLocations').find(
{$and: [
{type: locationType},
{createdAt : { "$gte": new Date(createdAt), "$lt": date1 }}
]}).skip(skip).limit(count);
Теперь я получаю сообщение об ошибке типа Cannot set headers after they are sent to the client
, если я делаю строку concate, а затем JSON.stringify, я попробовал pretty (), но этодает мне ошибку skip(...).limit(...).toString(...).pretty is not a function
or skip(...).limit(...).pretty is not a function
.Я совершенно не могу понять, как конвертировать, так как мне не совсем понятна концепция callback (), и все решения имеют это.Есть ли простой stringify, парсинг или довольно своеобразное решение.Ниже мой экспресс-фрагмент для получения, сейчас он выглядит очень грязно.Я хочу отправить вывод find () вместо случайных вещей.
app.get('/api/first', function(request, response) {
response.writeHead(200, {'Content-Type': 'application/json'});
var locationType = request.body.type;
var createdAt = request.body.createdAt;
//var pageNumber = parseInt(request.body.pageNumber);
console.log(locationType);
console.log(createdAt);
//console.log(pageNumber);
var date1 = new Date(createdAt);
date1.setDate(date1.getDate() + 1);
var count = 2;
var str="";
var skip;
if(request.body.pageNumber)
skip = parseInt((request.body.pageNumber-1)*count);
else
skip = 0;
MongoClient.connect(url, function(err, client) {
if (err) throw err;
console.log('Connected');
var db = client.db('locationapi');
var cursor = db.collection('dbLocations').find(
{$and: [
{type: locationType},
{createdAt : {"$gte": new Date(createdAt), "$lt": date1}}
]}
).skip(skip).limit(count);
cursor.each(function(err, doc) {
if(err) throw err;
if(doc !== null) {
console.log(doc); str=str+doc;
} else client.close();
});
client.close();
});
var myObj = {
name: 'jgj',
job: 'Ninja'
}; // random stuff
response.end(JSON.stringify(myObj));
});