2016-12-23 5 views
0

Возможно, немой вопрос, как гарантировать, что операция обновления прошла успешно? Вот как я это сделал, но возвращаемый «результат» - «ложный».гарантия MongoDB обновление функционирование успешный

import { Mongo } from "meteor/mongo"; 
const Employees = new Mongo.Collection("Employees"); 

const result = Employees.update({_id: employeeId}, {$push: {tasks: taskId}}); 
console.log(result); // "false" 

Благодаря

Дерек

+1

Вы делали это на клиенте или на сервере? На сервере вы получаете количество затронутых документов. На клиенте вы не получаете результат синхронно. – MasterAM

+0

@MasterAM Итак, на стороне сервера он работает синхронно, находясь на стороне клиента, он работает асинхронно? – derek

+1

На сервере используются волокна, позволяющие писать, по-видимому, синхронный код (он обертывает собственные функции Mongo async), а на клиенте он имитирует действие в MiniMongo и вызывает на сервере автогенерированный метод. Эти запросы являются асинхронными, и клиент не может реально узнать результат, пока метод не вернет ответ. – MasterAM

ответ

1

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

Что касается получения количества произведенных строк вы можете использовать обратный вызов по методу обновления (см API documentation)

функция обратного вызова

Дополнительно. Если присутствует, вызывается с объектом ошибки в качестве первого аргумента и, если нет ошибки, количество затронутых документов как второе.