2016-04-24 1 views
0

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

В основном мой код заканчивает тем, как это:

collection.attributeArray.push(item); 
collection.save(); 
collection.save(); 

Это приводит attributeArray выглядит следующим образом

[item, item] 

вместо того, чтобы просто

[item] 

Есть разумный способ выполняйте это, не зная, какое спасение будет вашим последним?

ответ

1

Mongoose отслеживает изменения в массивах документов, регистрируя атомную операцию $ pushAll. Обходным путем для этого было бы сделать

collection.attributeArray = collection.attributeArray.concat([ item ]); 
+0

Спасибо за ответ, я считаю, что это лучший способ подойти к проблеме. –

0

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

Но у меня есть предположение. Возможно, ваш collection.attributeArray.push(item); в цикле. Дважды нажмите item и он сохраняет несколько раз. Как я уже говорил, это просто догадка. В противном случае двойное сохранение не влияет на добавление элементов дважды.

В другом выпуске, почему вы используете .save() 2 раза? просто используйте один раз, прежде чем вызывать обратный вызов (или конец вашего кода).

Смежные вопросы