Цикл order.find, сбор и отправка большего количества данных на фронт. Плохой подход? - PullRequest
0 голосов
/ 15 января 2019

Я использую экспресс, реагировать и MongoDB. Я совершенно новый, чтобы выразить и REST API.

Я пытаюсь реализовать аналитическую часть для моего внешнего интерфейса по продажам, заказам и т. Д. Идея состоит в том, чтобы разрешить поиск диапазона дат, где у каждого объекта есть отметка даты, по которой я затем сравниваю и собираю данные.

Мой подход не работает, allOrder, кажется, не собирает весь объект, как я ожидал.

var allOrder = []; // gather all orders and push them

do {
  Order.find({ date: sDate })
    .then(function(order) {
      allOrder.push(order); //pushing order
    })
    .catch(next);

  // create new search date (normally in another function)
  startDate.setDate(startDate.getDate() + 1); // increment a day
  startYear = startDate.getFullYear();
  startMonth = startDate.getMonth() + 1;
  startDay = startDate.getDate();
  if (startMonth < 10) startMonth = "0" + startMonth; // fix format

  sDate = `${startYear}-${startMonth}-${startDay}`; // create new search date
  dayStart++;
} while (dayStart < days); // check the day range

res.send(allOrder); //once all days are done, send.

Это работает в том смысле, что увеличивает день, пока я не достигну определенной даты. Например, я нахожу на 2018-12-25, затем увеличиваю день и нахожу на следующий день 2018-12-26. Все это работает, за исключением случаев, когда дело доходит до окончания данных обратно. При каждой находке я делаю получаю все данные, я просто не могу их сохранить, ТОГДА отправляю все вместе на фронт.

моя объектная модель

const orderScheme = new Schema({
  name: { type: String },
  date: { type: String },
  customerName: { type: String },
  customerPhone: { type: String },
  orders: { type: Array }
});

1 Ответ

0 голосов
/ 15 января 2019

Крис помог мне сообщить мне в моих комментариях, решение было очень простым.

Order.find ({
    date: {
        $gte : sDate,
        $lt : eDate
    }
}).then (function (order){
    res.send(order);
}).catch(next)

my sDate - это моя собственная временная метка (или любое другое значение, которое вы хотите, я думаю), а также для eDate. Это работает безупречно и элегантно.

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