2016-07-23 5 views
0

I Remote-Methode erzeugt wurden unter Verwendung vonLoopback-Remote-Methode akzeptiert keine Parameter oder geben Fehler

slc loopback:remote-method

ich diese Methode aus dem Explorer zuzugreifen versucht, und es geben Status 400 mit der Meldung „phonenumber ist ein obligatorischer arg“

Wenn ich mit Postboten versuchte, gibt es Status 500 mit Nachricht Interner Serverfehler. Ich habe versucht, Post-Daten als Formular zu senden, x-www-form-urlencoded codiert und Zeile, es gibt dasselbe Ergebnis.

Server-Fehler:

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 

Modell json ähnliche

{ 
    "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" 
     } 
     ] 
    } } } 

Modell js

aussehen:

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

bin ich etwas fehlt?

Antwort

0

ich die Lösung gefunden.

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

Aber ich bin immer noch nicht in der Lage, die Remote-Methode von Explorer zu treffen. Es gibt einen Fehler issue#440.

Mit Postbote, fordern Sie funktionieren

1

Sie haben einen Tippfehler.

in Zeile oneTimePassword.phoneNumber = phoneNumber; Sie müssen auf optNumber

+0

Ich glaube nicht. Es ist für verschiedene Zwecke – Manish

+0

Ich habe den Fehler gefunden. Bitte überprüfen Sie die Antwort unten – Manish

Verwandte Themen