2015-07-23 2 views
0

Я хочу выбрать целый документ и отправить его как JSONObject.Запрос MongoDB - это JSONArray вместо JSONObject

app.post('/getinvbykost', function(request, response){ 
    var tablename = request.body.tablename; 
    Move.find({tablename: tablename}, function(err, doc) { 
     response.json(doc); 
    }); 
}); 

Это дает правильный результат, но с "[]" -> массив, а не с {} -> JSONObject. Кстати: У меня такая же проблема с Move.aggregate(pipeline, function(err, res) {...

результат:

[ 
    { 
    STUFF 
    } 
] 

Существует функция $ размотки, но я не понимаю ....

+0

Так что ... ответьте только первым. 'doc [0]' Или используйте метод 'findOne'. –

+1

Обратите внимание, что нет такой вещи, как JSONArray или JSONObject, только JSON, Objects и Arrays. 'doc' является массивом и выражает преобразование его в JSON при отправке его клиенту с использованием метода' res.json'. –

+0

Ну, это потому, что '# find' возвращает _array_ документов. Если вам нужны ваши результаты как объект с каждым свойством, соответствующим некоторым идентифицирующим данным, используйте [_.indexBy] (http://underscorejs.org/#indexBy) или аналогичный собственный код. – raina77ow

ответ

1

В этом случае, так как вы хотите только один результат , метод findOne был бы более уместным.

app.post('/getinvbykost', function(request, response){ 
    var tablename = request.body.tablename; 
    Move.findOne({tablename: tablename}, function(err, doc) { 
     response.json(doc); 
    }); 
}); 
+0

спасибо, комментарий в моем ответе сказал это ... – Piet

+2

Да, это был мой комментарий. :) –

+0

Мне нужно поставить в нем предложение WHERE. Правильно, что findOne не принимает предложение WHERE? – Piet

Смежные вопросы