如何在另一个持久模型的另一个远程方法中调用一个持久模型的远程方法

How to call remote method of one persisted model inside another remote method of another persisted model

这是我在 model1.js 中尝试的方法:

      model1.remotemethod1 = function(id, data, cb) {
var model2 = app.models.model2;
model2.remotemethod2(id, data).then(response => {
cb(null, true);
});
 };

这是我的 model2.js: 它具有 remotemethod2 的定义。

 'use strict';

  module.exports = function(model2) {

  model2.remotemethod2 = function(id, data, cb) {
     var promise;
     let tags = data.tags ? data.tags.slice() : [];
     delete data.categories;
     delete data.tags;
     promise = model2.upsertWithWhere({
             or: [
                 {barcode: data.barcode},
                 {id: data.id},
             ],
         }, data);
     promise.then(function(model2) {
         model2.tags.destroyAll().then(function() {
             for (let i = 0; i < tags.length; i++) {
                 model2.tags.add(tags[i]);
             }
             cb(null, model2);
         });
     });
    };
 };

但是没有用! 我认为 app.models.model2 没有给我带有远程方法的模型!也许我应该得到 model2 的一个实例!

server.js app.start 中声明 remotemethod1 并且您将有权访问正确的 app.models.model2 并且您将能够使用其远程方法。

app.start = function() {
     model1.remotemethod1 = (id, data, cb) =>  {
        var model2 = app.models.model2;
        model2.remotemethod2(id, data).then(response => {
           cb(null, true);
        });
     };

      model1.remoteMethod(
        'remotemethod1', {
            http: { path: '/remotemethod1', verb: 'post', status: 200, errorStatus: 400 },
            accepts: [{arg: 'id', type: 'number'}, {arg: 'id', type: 'object'}],
            returns: {arg: 'status', type : 'string' }
        }) ;
    }  

    //  The rest of app.start...

编辑您还可以创建远程方法,将正确的 app 上下文与位于 myprojectname/server/boot

中的文件
`module.exports(app) {
     /* Create remote methods here */
}`
var (VAR-NAME)= (CURRENT-MODEL).app.models.(ANOTHER_MODEL);

您现在可以通过调用其中一种方法来使用另一个模型,例如

EX:

VAR-NAME.create();