无法使用 loopback-connector-remote 在另一个环回应用程序中调用一个环回应用程序模型

Unable to call one loopback app models in another looopback app using loopback-connector-remote

我使用 lb cli 创建了两个测试环回应用程序

1) loopbacktest1
2) loopbacktest2

我正在使用 loopback-connector-remote 来访问 loopbacktest2 loopbacktest1 中的模型,但我无法访问它,我什至不能 完全可以在 app1 中看到 app2 模型(副诗句也是如此),有人可以帮助我吗?

这是我的数据源

{
 "db": {
 "name": "db",
 "connector": "memory"
 },
"MyMicroService": {
 "name": "MyMicroService",
 "connector": "remote",
 "url": "http://localhost:7001/api"
 }
}

正在用最终答案更新问题:-

在json文件中添加以下配置(这是远程方法名)

  todos.json
  "methods": {
    "getName": {
      "returns": {
      "arg": "data",
      "type": "string"
     },
     "http": {
       "verb": "get"
     }
   }
  }

然后像这样调用那个远程方法

const remoteDs = ModelName.app.dataSources.MyMicroService;
  // the strong-remoting RemoteObjects instance
  const remotes = remoteDs.connector.remotes;
  remotes.auth = {
    bearer: `${access_token}`,
    sendImmediately: true
  };
  MyMicroService.app.models.todos.getName(function (err, data) {
    cb(err, data);
  });
  // cb(null, data);
}).catch((err) => {
  cb("sone error", null);
});

我仍然面临一些小问题,即如果上述身份验证失败,那么我得到的错误为 null,数据为未定义,相反,我期待错误值和数据,因为 null.There 可能是一些问题在环回连接器远程

你也应该在loopbacktest1中定义loopbacktest2模型,表明要使用的数据源是MyMicroService

如果您按照 https://github.com/strongloop-community/loopback-example-connector/tree/remote 中的示例进行操作,那么您应该有一个包含多个文件的 client 子目录,其中包括 model-config.json 您应该在其中添加 loopbacktest1 模型和 MyMicroService作为数据源。

并且在 common/models 中,每个模型都有一个 json 文件,至少包含基本定义,例如 https://github.com/strongloop-community/loopback-example-connector/blob/remote/common/models/person.json

我按照这个例子很快就开始工作了。

我是这样处理身份验证的:

const app = require('./client/client');
const User = app.models.User;
const MyModel = app.models.MyModel;
// the remote datasource (as defined in datasources.json)
const remoteDs = app.dataSources.remoteDS;
// the strong-remoting RemoteObjects instance
const remotes = remoteDs.connector.remotes;
/*
   credentials.json example (I keep it untracked by git):

   {
    "email": "example@example.com",
    "password": "123456"
   }

*/
const credentials = require('./credentials.json');

User.login(credentials).then(token => {
    // store the token to allow logout
    credentials.token = token;

    // set the access token to be used for all future invocations
    remotes.auth = {
        bearer: (new Buffer(token.id)).toString('base64'),
        sendImmediately: true
    };

    /* from this point every request made by any model attached 
       to remoteDS will be authenticated */
    return MyModel.find();
}, err => {
    // handle auth error
}).then(models => {
    console.log(`Got ${models.length} instances!`);
});