Как упаковать элементы UPSERT в JavaScript для Mongodb - PullRequest
0 голосов
/ 11 июля 2019

В mongodb у вас есть функция пакетной загрузки.

Через POST я получаю массив с записями.То, что я хотел бы сделать, это сделать пакетный upsert.Таким образом, если элемент из моего массива не существует в БД для публикации в Mongod, но он существует для его обновления.

data = [
{id: 1, name: 'John', type: 'pizza', parentId: 0}
{id: 2, name: 'asdasdasd', type: 'pizza', parentId: 1}
{name: 'dddd', type: 'pizza', parentId: 1},
{name: 'Zooo', type: 'House', parentId: 1},
{id: 3, name: 'Zooo', type: 'House', parentId: 2}
]

Во-первых, две записи и последняя являются элементами, которые у меня уже есть вдБ, поэтому мне нужно их расстроить, а остальные два новые.

Я использую библиотеку aws-sdk

У меня есть созданный мной файл утилит, который является просто ярлыком.

/*
/ Util file
/*


/* istanbul ignore next */
if (!process.env.AWS_REGION) {
    process.env.AWS_REGION = 'eu-west-1';
}

/* istanbul ignore next */
if (!process.env.DYNAMODB_NAMESPACE) {
    process.env.DYNAMODB_NAMESPACE = 'dev';
}

const AWS = require('aws-sdk/index');

// In offline mode, use DynamoDB local server
let DocumentClient = null;
/* istanbul ignore next */
if (process.env.IS_OFFLINE) {
    AWS.config.update({
        region: 'localhost',
        endpoint: "http://localhost:8000"
    });
}
DocumentClient = new AWS.DynamoDB.DocumentClient();

const Util = require('./Util');
const paymentsTable = Util.getTableName('website');
const uuidv4 = require('uuid/v4');
const jwt = require('jsonwebtoken');

module.exports = {
    async post(event) {

// Can't figure out here on how to do batch UPSERT

        return Util.envelop({
            payments: items.Items[0]
        });
    }
};

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...