вставить в две таблицы, используя пользовательский API POST - PullRequest
0 голосов
/ 18 апреля 2019

используя удаленный метод loopback для создания пользовательского API для вставки в 2 разные таблицы, связанные с внешним ключом, расположенным в photoscomedien, равном id_comedien, поэтому при тестировании с помощью проводника я могу вставить только в одну таблицу, потому что У меня есть только один обратный вызов, где я могу поставить только один из 2 запросов. мне интересно, есть ли способ выполнить оба запроса, чтобы вставка выполнялась в обеих таблицах одновременно.

это то, что я уже сделал в cm_comediens.js

'use strict';
  var app = require('../../server/server.js');

  module.exports = function(cm_comediens) {

    cm_comediens.profile = function (idComedien,path,name,id_utilisateur,naissance_date,infos_news_timestamp,timestamp_creation,cb) {

        var ds = app.datasources.mydb;
        var sql = "INSERT INTO cm_comediens (id_comedien,id_utilisateur,naissance_date,infos_news_timestamp,timestamp_creation) VALUES (?,?,?,?,?)";
        var sql2 = "INSERT INTO photoscomedien (id_comedien,path,name) VALUES (?,?,?)";

        ds.connector.execute(sql2, [idComedien,path,name], function (err, cm_comedienss) {
            ds.connector.execute(sql, [idComedien,id_utilisateur,naissance_date,infos_news_timestamp,timestamp_creation], function (err, cm_comedienss) {
            if (err) console.error(err);
            cb(err, cm_comedienss);        
        });
        });
    };

    cm_comediens.remoteMethod(
        'profile',
        {
            http: { verb: 'post' },
            description: 'Post list of comediens',
             accepts:[
             { arg: 'idComedien', type: 'number' },
             { arg: 'id_utilisateur', type: 'number' },  
             { arg: 'infos_news_timestamp', type: 'date' },  
             { arg: 'naissance_date', type: 'date' },  
             { arg: 'timestamp_creation', type: 'date' } , 
             { arg: 'path', type: 'string' },  
             { arg: 'name', type: 'string' } 
            ],
            returns: { arg: 'data', type: ['cm_comediens'], root: true }
        }
    );
};

1 Ответ

0 голосов
/ 18 апреля 2019

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

Но вы пытаетесь вставить в photoscomedien перед тем, как вставить в cm_comediens. Обратный порядок ваших двух запросов.

Возможно, вам стоит проверить ошибки перед вашей .execute() ... операцией внутри вашего обратного вызова. Если вы получили значение ошибки, вы должны сообщить об этом и не выполнять следующую операцию.

Совет Pro: узнайте и используйте Promises или async / await. Лучше, чем бесконечно вложенные обратные вызовы.

...