thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (THRIFT-4010) Q.fcall messing up with *this* pointer inside called function
Date Tue, 27 Dec 2016 23:56:58 GMT

    [ https://issues.apache.org/jira/browse/THRIFT-4010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15781565#comment-15781565
] 

ASF GitHub Bot commented on THRIFT-4010:
----------------------------------------

Github user asfgit closed the pull request at:

    https://github.com/apache/thrift/pull/1143


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

Mime
View raw message