как перехватить неудачные записи в neo4j db при записи нескольких записей - PullRequest
0 голосов
/ 26 августа 2018

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

router.addInvitees = function(sponsorEmail, inviteeEmails, callback) {
        console.log("Add invite params....." + sponsorEmail + " " + JSON.stringify(inviteeEmails));
        commons.session
            .run(`WITH {paramInviteeEmails} AS coll
            UNWIND coll AS invitee
            WITH DISTINCT invitee
            MERGE (i:withEmail  {email: invitee.email})
            ON CREATE
            SET i:Invitee
            WITH i,invitee
            MATCH(i:Invitee:withEmail) MATCH (s:Person {email: {paramSponsorEmail}})
            CREATE (s)-[r:INVITED {since: timestamp(), token: invitee.token}]->(i)
            RETURN COUNT(r) AS invitees`, {
                paramSponsorEmail: sponsorEmail,
                paramInviteeEmails: inviteeEmails
            })
            .then(result => {
                commons.session.close();
                console.log('Result of invitees added to db: ' + result.records[0].get('invitees'));
                return callback({
                    code: '0',
                    msg: result.records[0].get('invitees')
                })
            })
            .catch(error => callback({
                code: '1',
                msg: 'No invitees were added to Database' + error
            }))
    }

Неужели в результате будут возвращены только успешные записи?ИЛИ я могу захватить неудачных?Чтобы уточнить мой вопрос .... Если MERGE (i: withEMail ....) находит совпадение, я не хочу его обновлять, поэтому я пропускаю его.Как я могу узнать, какие из них я пропустил?.... ПРИМЕР ПРИМЕНЕНИЯ - я создаю список рассылки, в который я отправляю каждому человеку электронное письмо, если был создан узел ... Я пытаюсь сделать это наиболее эффективным способом, учитывая наличие очень большой базы данных,удаленный доступ к БД и время отклика пользователя.

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