Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-4010

Q.fcall messing up with *this* pointer inside called function

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.3
    • Fix Version/s: 0.11.0
    • Component/s: Node.js - Compiler
    • Labels:
      None

      Description

      Example: I define a basic service

      ```
      namespace js Auth

      service AuthSrv {
      string signin(
      1:string email,
      2:string password
      )
      }
      ```

      And set up a Auth es6 class that gonna handle the requests like this:

      ```
      module.exports = class AuthSrv {
      constructor()

      { this.db = ......... }

      async signin(email, password) {
      try

      { let user = await this.db.findOne(....) }

      ....
      }
      }
      ```

      and instantiate a thrift server like this:

      ```
      let server = thrift.createServer(AuthProcessor, new AuthSrv());
      ```

      In this scenario, i'm getting that this pointer is *undefined* when signin function is called. Looking at thrift generated code for the processor i saw this line:

      ```
      if (this._handler.signin.length === 2) {
      Q.fcall(this._handler.signin, args.email, args.password)
      .then(.....)
      }
      ```

      If i change the fcall to:

      ```
      if (this._handler.signin.length === 2) {
      Q.fcall(this._handler.signin.bind(this._handler), args.email, args.password)
      .then(.....)
      }
      ```

      everything works like a charm and this pointer is correctly assinged inside signin function call.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                brunomacf Bruno Fonseca
                Reporter:
                brunomacf Bruno Fonseca
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: