You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jens Geyer (JIRA)" <ji...@apache.org> on 2016/12/27 23:57:58 UTC
[jira] [Resolved] (THRIFT-4010) Q.fcall messing up with *this*
pointer inside called function
[ https://issues.apache.org/jira/browse/THRIFT-4010?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jens Geyer resolved THRIFT-4010.
--------------------------------
Resolution: Fixed
Assignee: Bruno Fonseca
Fix Version/s: (was: 0.10.0)
0.11.0
Committed, thanks!
> 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
> Assignee: Bruno Fonseca
> Fix For: 0.11.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)