Mon goose удалить _id и __v перед отправкой на передний конец - PullRequest
1 голос
/ 31 января 2020

Когда я получаю данные из mon go через mon goose с ...

      const allAssets = await assets
        .find({ company })
        .sort([['createdAt', -1]])
        .exec();
      res.status(200).json({ assets: allAssets });

Я всегда получаю _id и __v, но я не хочу отправлять их во внешний интерфейс, есть ли как я могу легко сказать, что я не хочу эти значения или удалить их перед отправкой?

    {
      "indistructable": true,
      "_id": "5e345c2dc84be8995a5b4cf2",
      "baseUri": "https://api.website.com/nameco8/",
      "company": "jnameco8",
      "description": "asset",
      "image": "myimage.png",
      "name": "jim",
      "supply": 100,
      "createdAt": "2020-01-31T16:56:13.816Z",
      "updatedAt": "2020-01-31T16:56:13.816Z",
      "__v": 0
    },

Я пытался добавить

    __v: {type: Number, select: false},
    _id: { type: mongoose.Schema.Types.ObjectId, select: false },

в мою схему, но при сохранении в схему я тогда получаю ошибку "document must have an _id before saving"

1 Ответ

2 голосов
/ 31 января 2020

Насколько я полагаю, схемы предназначены для записи, чтобы ограничить запись неизвестных полей в документы, которые делают ваши документы похожими по всей коллекции, но если вам нужно удалить несколько полей в режиме чтения, попробуйте проецирование в .find () :

const allAssets = await assets
        .find({ company }, {_id :0, __v:0})
        .sort([['createdAt', -1]])
        .exec();
      res.status(200).json({ assets: allAssets });
...