2017-09-23 77 views
0

我一直在使用磅CLI無法使用到呼叫另一個looopback應用一個迴環應用模型迴環連接器遠程

1) loopbacktest1 
2) loopbacktest2 

創建了兩個測試環迴應用程序,我使用迴環連接器,遙控器獲取的訪問loopbacktest2 模型在loopbacktest1中,但我無法訪問它,我什至不能 在app1中看到app2模型(反之亦然),任何人都可以幫助我嗎?

這裏是我的datasoureces

{ 
"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); 
}); 

在這裏,我仍然面臨一些小問題,即如果上面的身份驗證失敗,那麼我得到err爲null和數據爲undefined,而我期望錯誤值和數據爲null.There可能會在loopback- connector-remote

回答

1

您還應該在loopbacktest1中定義loopbacktest2型號,以指示要使用的數據源是MyMicroService

如果您遵循https://github.com/strongloop-community/loopback-example-connector/tree/remote的例子,那麼你應該有一個包含多個文件,包括model-config.json,你應該爲數據源與MyMicroService添加loopbacktest1車型client子目錄。

,共同/模型爲每個模型的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": "[email protected]", 
    "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!`); 
}); 
+0

嘿@MrTorture感謝您的幫助,現在我可以打電話給APP1模型APP 2。你知道如何爲這些電話添加授權嗎?基本上這些應用程序受到身份驗證保護,所以我還需要傳遞訪問令牌。你有什麼想法嗎? – bvenkatr

+1

剛剛編輯我的答案,以包含如何處理身份驗證的示例。 – MrTorture

+0

非常感謝,讓它工作。 – bvenkatr

相關問題