ПОЛУЧИТЬ строку внутри объекта, вложенного в массив - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть маршрутизатор get, который получает заказы с отметкой времени

router.get('/api/order/:date/:time', function (req,res,next) {
  Box.find({orders: {date:req.params.date}}.then (function (order){
       console.log('GET ORDER / with ', req.params.date);
       res.send(order);
   }).catch(next);
});

:time просто позволяет моему веб-интерфейсу вызывать этот конкретный метод get, который предлагает отметку времени внутри параметра :date

Теперь модель

const orderSchema = new Schema({
    name : { type : String },
    date : { type : String }, // date stamp of only YYYY/MM/DD
    orders : { type : Array}
});

Внутри этого массива заказов вы можете найти такие элементы, как:

"orders" : [ 
        {
        "type" : "Meat Lover Slice",
        "extraType" : "na",
        "extraInfo" : "na",
        "date" : "2018-09-27:08:47:07",
        "quantity" : "1",
        "size" : "medium",
        "crust" : "normal",
        "split" : false,

и т. Д. (15 или около того элементов)

Вы можете видеть внутри этого массива заказов, есть время с отметкой YYYY/MM/DD:HH:MM:SS (2018-09-27: 08: 47: 07).

внутри маршрутизатора, я получаю

console.log('GET ORDER / with ', req.params.date) // > GET ORDER / with 2018-09-27:08:47:07

, поэтому он получает время на этом маршруте.

Но с параметрами, как отфильтроватьконкретные заказы, соответствующие этому элементу?

order object

1 Ответ

0 голосов
/ 27 сентября 2018

Если я правильно понял, вопрос в том, что короткий ответ таков: вы не можете, нет способа «фильтровать» поддокументы в стандартном запросе.(Взгляните на Возврат только совпадающих элементов вложенного документа во вложенном массиве для более подробного ответа.)

Что вы можете сделать, это либо использовать агрегаты MongoDB (https://docs.mongodb.com/manual/aggregation/) или выполните фильтрацию самостоятельно, когда получите результат запроса. Я бы предложил выполнить фильтрацию самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...