Пн goose заполнить () вернуть ноль - PullRequest
0 голосов
/ 20 января 2020

Я получаю значение NULL в качестве ответа на мой запрос после использования метода заполнения вместо объекта

Это мой обработчик маршрута

router.get("/:id", (req, res, next) => {
  let id = req.params.id;
  Order
    .findById(id)
    .populate('product')
    .exec()
    .then(doc => res.status(200).json({
      ...doc._doc,
      requests: {
        method: "GET",
        desc: "All Orders",
        url: "http://localhost:3000/orders"
      }
    }))

})

Это моя схема

const mongoose = require("mongoose");

var orderSchema = {
  _id: mongoose.Schema.Types.ObjectId,
  product: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "Product",
    required: true
  },
  quantity: {
    type: Number,
    default: 1
  }
}

module.exports = mongoose.model('Order', orderSchema);

Это пример ответа, который я получаю после использования populate (). Перед использованием заполнить я получил OjectId, который я проверил, существует в базе данных

{
  "quantity": 1947,
  "_id": "5e25af75362bb0538c37b587",
  "product": null,
  "__v": 0,
  "requests": {
    "method": "GET",
    "desc": "All Orders",
    "url": "http://localhost:3000/orders"
  }
}

1 Ответ

0 голосов
/ 21 января 2020

Пн goose заполнить ведут себя как левое соединение в SQL БД, что означает, что он возвращает нулевой или пустой массив, если не найден чужой документ.

И поскольку, возможно, вы добавили это поле позже в схему сбора, поэтому в предыдущих документах это поле было пустым.

...