Bruno Fonseca created THRIFT-4010: ------------------------------------- Summary: Q.fcall messing up with *this* pointer inside called function Key: THRIFT-4010 URL: https://issues.apache.org/jira/browse/THRIFT-4010 Project: Thrift Issue Type: Bug Components: Node.js - Compiler Affects Versions: 0.9.3 Reporter: Bruno Fonseca Fix For: 0.10.0
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. -- This message was sent by Atlassian JIRA (v6.3.4#6332)