2015-08-05 3 views
3

Мне нужно удалить свойство из экземпляра документа mongoose. Я нашел много вопросов, которые показывают, как удалить его из базы данных, но это не то, что я ищу.Удалить свойство из экземпляра экземпляра mongoose

Мне нужно вытащить документ, включая поле для проверки доступа к безопасности. Затем я хочу разбить это поле, чтобы он не раскрывался, если нисходящий код решает позвонить toObject() и отправить объект обратно клиенту.

Любые мысли?

ответ

4

Мне нужно было удалить свойство пароля из экземпляра документа, но я не нашел ничего в документации API. Вот что я сделал:

doc.set('password', null); // doc.password is null 

Тогда я нашел вы также можете сделать это:

delete doc._doc.password // doc.password is undefined 
+0

Я пришел с 'удалить doc._doc.password' также. Единственное предостережение заключается в том, что это также нарушает сохранение документа, который является функциональностью, в которой я нуждаюсь. Я сейчас просто игнорирую это, пока не успею найти лучшее решение. – joshperry

+0

Это прерывает сохранение, потому что ваша схема ожидает свойство как строку и получает неопределенное значение. Попробуйте обновить вместо сохранения. – sergeyz

1

Использование set функции со значением null будет просто присвоить значение, а не удалить его. Лучше сначала преобразовать документ с помощью toObject() (так, что становится ясно, Object), внести изменения и восстановить его обратно к модели документа:

let tempDoc = doc.toObject(); 
delete tempDoc.password; 
doc = new this(tempDoc); 
Смежные вопросы