В 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]
});
}
};
Я должен быть в состоянии выполнить массовое удаление и получить возвращенный список всех элементов, вставленных и обновленных, и если Элемент не будет вставлен, то должна произойти ошибка всей массовой загрузки.