Scorocode.UpdateOps

Содержание

new UpdateOps()

Класс для осуществления операций множественного обновления объектов

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты, значение поля price которых не равно 42.
Items.notEqualTo("price", 42)
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Установим новое значение поля "price"
            updateItems.set("price", 42);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Возвращает: UpdateOps - Возвращает экземпляр sc.UpdateOps


.set(data)

Метод для передачи данных объекту

Параметр Тип Описание
data Object Данные в формате {"key", "value"}, где key - имя поля коллекции.

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты, значение поля price которых не равно 42.
Items.notEqualTo("price", 42)
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Установим новое значение поля "price"
            updateItems.set("price", 42);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

см.


.push(key, value)

Метод для добавления элемента в массив.

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
value String Изменение, которое нужно внести

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "arrayField".
Items.exists("arrayField")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Добавим новый элемент в массивы, хранящиеся в "arrayField" объектов выборки
            updateItems.push("arrayField", "Новый элемент массива");
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

.pull(key, value)

Метод для удаления всех элементов массива, значение которых равно указанному.

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
value String / Number / Boolean / Date / Array / Object Удаляемое значение

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "arrayField".
Items.exists("arrayField")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Из значений массивов "arrayField" удалим все элементы со значением, равным {"Удалить этот объект": true}.
            updateItems.pull("arrayField", {"Удалить этот объект": true});
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error "For a new document use the method Set"
  • Error 'Field must by a type of array'

.pullAll(key, value)

Метод для удаления всех элементов массива, значения которых равны одному из указанных значений.

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
value Array Массив удаляемых значений

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "arrayField".
Items.exists("arrayField")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Из значений массивов "arrayField" удалим все элементы со значениями, равными "Удалить", 42 или {"Не удалять": false}.
            updateItems.pullAll("arrayField", ["Удалить", 42, {"Не удалять": false}]);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of array'
  • Error 'Value must by a type of array'

.addToSet(key, value)

Метод для добавления элемента в массив только в том случае, если в массиве отсутствуют элементы с таким значением.

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
value Array Значение добавляемого элемента

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "arrayField".
Items.exists("arrayField")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Добавим в массивы, хранящиеся в поле "arrayField", новый элемент ["Первый элемент нового элемента", {"Второй?": true}], если такого элемента ещё нет в значении "arrayField" объектов.
            updateItems.addToSet("arrayField", ["Первый элемент нового элемента", {"Второй?": true}]);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of array'

.pop(key, pos)

Метод для удаления первого или последнего элемента массива

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
pos Number Позиция удаляемого элемента в массиве: -1 для первого элемента и 1 для последнего

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "arrayField".
Items.exists("arrayField")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Удалим последний элемент из значений массивов полей "arrayField".
            updateItems.pop("arrayField", 1);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of array'

.inc(key, amount)

Метод увеличивает значение числового поля на заданное число

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
amount Number Шаг изменения

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "price".
Items.exists("price")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Уменьшим значения полей "price" на 2.42
            updateItems.inc("price", -2.42);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of number'

.currentDate()

Устанавливает текущее время в качестве значения поля

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
type String / Boolean Тип даты. Принимает значения: true, 'date' или 'timestamp'

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Запросим все объекты коллекции "items"
Items.find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Запишем текущую дату в поле "someDate" всех объектов
            updateItems.currentDate("someDate", "timestamp");
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Invalid type'

.mul(key, number)

Метод умножает значение числового поля на заданное число

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
number Number Мультипликатор

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "price".
Items.exists("price")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Умножим значения полей "price" на 0.5
            updateItems.mul("price", 0.5);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of number'
  • Error 'Value must by a type of number'

.min()

Метод обновляет значение числового поля только в случае, если новое значение меньше текущего значения поля

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
number Number Новое значение

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "price".
Items.exists("price")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Изменим значение поля "price" объектов на новое значение 42 в случае, если новое значение поля меньше текущего.
            updateItems.min("price", 42);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of number'
  • Error 'Value must by a type of number'

.max()

Метод обновляет значение числового поля только в случае, если новое значение больше текущего значения поля

Параметр Тип Описание
key String Имя поля, значение которого нужно изменить
number Number Новое значение

Пример

// Подключим SDK и инициализируем его. 
var sc = require('scorocode');
sc.Init({
    ApplicationID: "applicationId_приложения",
    JavaScriptKey: "javascriptKey_приложения"
});

// Создадим новый экземпляр запроса к коллекции items и объект обновления.
var Items = new sc.Query("items");
var updateItems = new sc.UpdateOps("items");

// Установим условие выборки - запросить все объекты с существующим значением поля "price".
Items.exists("price")
    // Выполним запрос к данным коллекции
    .find()
        // Обработчик успешного выполнения запроса
        .then((result) => {
            // Изменим значение поля "price" объектов на новое значение 42 в случае, если новое значение поля меньше текущего.
            updateItems.max("price", 42);
            // Обновим запрошенные объекты
            return Items.update(updateItems)
        })
        // Обработчик успешного выполнения запроса
        .then((updated) => {
            // Выведем результат  в консоль.
            console.log(updated);
        }) 
        // Обработчик ошибки
        .catch((error) => {
            console.log("Что-то пошло не так: \n", error)
        });

Исключения:

  • Error 'For a new document use the method Set'
  • Error 'Field must by a type of number'
  • Error 'Value must by a type of number'