Вопрос по mongoose, node.js – у мангуста есть проверка isDirty?

4

У меня есть установка mongoose, включающая встроенную схему, скажем: Blogpost со встроенными комментариями. Комментарии могут быть отредактированы как оригинальным издателем, так и редактором / администратором. После добавления / редактирования комментария вся запись блога сохраняется.

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

Дело в том, что «pre» вызывается КАЖДЫМ комментарием в посте, так как я вызываю save () для поста. (По другим причинам мне нужно сделать это так). Поэтому мне нужен способ проверить, какие комментарии были изменены (или являются новыми) с момента их последнего сохранения (как часть общего поста Blogpost save ())

Вопрос: как проверить в «пред», изменился комментарий или нет? Очевидно, зоветthis.isNew недостаточно, так как комментарии также могут быть отредактированы (т.е. не новы).

Есть лиisDirty или подобное, что я пропускаю?

Ваш Ответ

3   ответа
3

Вы можете использовать модифицированный геттер:

if (doc.modified) {
   // :)
}
Как мы это используем? raju
16

Для версии 3.x

if(doc.isModified()){
  // do stuff
}
как мы это используем? raju
7

isModified(@STRING).

Самую последнюю документацию по методу можно найтиВо.

Чтобы проверить определенное свойство с помощью doc.isModified, вы можете сделать это:

doc.comments[4].message = "Hi, I've made an edit to my post";
// inside pre hook
if ( this.isModified('comments') ) {
  // do something
}

Если вы хотите проверить конкретный комментарий, вы можете сделать это с помощью следующей записиthis.isModified('comments.0.message')

Поскольку аргумент принимает строку, если вам нужно было конкретно знать, какой комментарий был изменен, вы можете просмотреть каждый комментарий и запуститьthis.isModified('comments['+i+']message')

Похожие вопросы