Mongodb пустой объект Object.keys(myObj).длина возвращает неправильные значения

#mongodb #mongoose

Вопрос:

У меня есть объект внутри коллекции под названием «childLimit». Схема: user: { name: {type: String}, childLimit: {dailyLimit: {type: Number} }

Теперь, если я не вставил никакой информации в этот объект (childLimit) при создании пользователя, поэтому его не должно быть там, как работает монго, это нормально. но когда я это утешаю, он возвращает {} пустой объект, что нормально. Но когда я console.log(Object.values(childLimit)), он консольный [ истинный, неопределенный, неопределенный, неопределенный], что странно???? Объект.ключи(ограничение на детей).длина возвращает 2, но она должна быть 0??

Теперь как я могу проверить, пуст ли объект?? ИЛИ если объект существует??

Ответ №1:

Кажется, это из-за Мангуста, я прав?

Просто зарегистрируйте ключи, которые вы считаете, и вы увидите что-то вроде следующего: Мангуст-внутренние свойства, но не ключи вашего документа:

 console.log(Object.keys(doc));
// [ '$__', 'isNew', 'errors', '$locals', '$op', '_doc' ]
 

На самом деле вам нужны свойства документа. Вы можете сделать это следующим образом:

 console.log(Object.keys(doc.toObject()));
// [ 'foo', 'bar', 'baz' ]
 

Или альтернативно (хотя это, похоже, не публичный API!):

 console.log(Object.keys(doc._doc));
// [ 'foo', 'bar', 'baz' ]
 

Обратите внимание, что иногда и то, и другое может возвращать разные результаты.