Правильный способ проверить свойство Mon goose Документ пуст - PullRequest
0 голосов
/ 23 марта 2020

Предположим, схема

const sch = new mongoose.Schema({
  obj: {
    subObj: String;
  }
});

Затем я замечаю, что несуществующее или пустое свойство документа дает мне isEmpty == false.

import { isEmpty } from 'lodash';
// Insert an empty document (i.e. no `obj` property)
Sch.create([{}]);

Sch.findOne({}. (err, doc) => {
  // Below gives `{}`
  console.log(doc.obj);
  // Below gives `false`
  console.log(`isEmpty == ${isEmpty(doc.obj)`);
});

Я подозреваю, что это потому, что документ содержит obj в качестве ключа, то есть Object.keys(doc).includes('obj') == true или Object.getOwnPropertyNames(doc).includes('obj') == true. Но я понятия не имею, что с этим делать.

Как правильно проверить пустоту свойства документа mon goose?

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Я нашел решение в самом мон goose. Ниже приведено то, что я пробовал с loda sh

doc.$isEmpty('obj')

Ссылка

  1. Document.prototype. $ IsEmpty ()
0 голосов
/ 23 марта 2020

Обновление:

Причина, по которой вы получаете это:

console.log(Object.keys(doc.obj), Object.keys({}));

при выполнении команды выше, я получаю: [ '$init', 'subObj' ] [], что означает, что ваш Object не совсем пустой, lodash, вероятно, проверяет эти атрибуты

Вы можете использовать что-то вроде этого:

Sch.findOne({}, (err, doc) => {
  if (JSON.stringify(doc.obj) === JSON.stringify({}) ) {
     // logic goes here
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...