2016-07-23 82 views
0

我已生成使用環回遠程方法不接受參數或給出錯誤

slc loopback:remote-method

我試圖從資源管理器訪問該方法並把它送給狀態400與消息遠程方法「phoneNumber的是一個需要ARG」

當我嘗試郵遞員時,它給與狀態500與消息內部服務器錯誤。我嘗試發送發佈數據作爲表單,x-www-form-urlencoded編碼,並且行,它給出相同的結果。

服務器端錯誤:

Unhandled error for request POST /otp/getOTP: TypeError: Cannot read property 'modelName' of null 
at convertToBasicRemotingType (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/shared-method.js:390:16) 
at /Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/shared-method.js:544:20 
at Array.filter (native) 
at Function.SharedMethod.toResult (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/shared-method.js:534:21) 
at callback (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/shared-method.js:249:31) 
at Function.Onetimepassword.getOTP (/Users/manish/Documents/workspace-node/carbuk-services/common/models/one-time-password.js:14:4) 
at SharedMethod.invoke (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/shared-method.js:263:25) 
at HttpContext.invoke (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/http-context.js:387:12) 
at phaseInvoke (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/strong-remoting/lib/remote-objects.js:644:9) 
at runHandler (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/loopback-phase/lib/phase.js:135:5) 
at iterate (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/async/lib/async.js:146:13) 
at Object.async.eachSeries (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/async/lib/async.js:162:9) 
at runHandlers (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/loopback-phase/lib/phase.js:144:13) 
at iterate (/Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/async/lib/async.js:146:13) 
at /Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/async/lib/async.js:157:25 
at /Users/manish/Documents/workspace-node/carbuk-services/node_modules/loopback/node_modules/async/lib/async.js:154:25 

模型JSON像這樣

{ 
    "name": "OneTimePassword", 
    "plural": "otp", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
     "validateUpsert": true 
    }, 
    "properties": { 
     "phoneNumber": { 
      "type": "number", 
      "required": true 
     }, 
    "otpNumber": { 
     "type": "number", 
     "required": true 
    }, 
    "resendCounter": { 
     "type": "number", 
     "default": "0" 
    }, 
    "createdDate": { 
     "type": "date" 
    } }, "validations": [], "relations": {}, "acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "DENY" 
    }, 
    { 
     "accessType": "EXECUTE", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "ALLOW", 
     "property": "deleteById" 
    }, 
    { 
     "accessType": "EXECUTE", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "ALLOW", 
     "property": "getOTP" 
    } ], "methods": { 
    "getOTP": { 
     "accepts": [ 
     { 
      "arg": "phoneNumber", 
      "type": "number", 
      "required": true, 
      "description": "phone number", 
      "http": { 
      "source": "form" 
      } 
     } 
     ], 
     "returns": [ 
     { 
      "arg": "oneTimePassword", 
      "type": null, 
      "root": true, 
      "description": "otp" 
     } 
     ], 
     "description": "generate otp and send sms", 
     "http": [ 
     { 
      "path": "/getOTP", 
      "verb": "post" 
     } 
     ] 
    } } } 

模型JS:

module.exports = function(Onetimepassword) { 
    /** 
    * generate otp and send sms 
    * @param {number} phoneNumber phone number 
    * @param {Function(Error,)} callback 
    */ 
    Onetimepassword.getOTP = function(phoneNumber, callback) { 
     var oneTimePassword = {}; 
     oneTimePassword.phoneNumber = phoneNumber; 
     // TODO 
     // logic will come here 
     // 
     callback(null, oneTimePassword); 
    }; 
    }; 

我缺少的東西?

回答

0

我找到了解決辦法。

In model.json, Remote method's return type is null. I changed this to object type "OneTimePassword"

但我仍然無法從資源管理器中打開遠程方法。有一個錯誤issue#440

使用郵遞員,請求工作正常

1

您有一個錯字。

符合oneTimePassword.phoneNumber = phoneNumber;您需要設置optNumber

+0

我不這麼認爲。這是爲了不同的目的 – Manish

+0

我發現了錯誤。請檢查下面的答案 – Manish

相關問題