Braintree customer.find()无法使用Nodejs

时间:2015-08-28 12:56:53

标签: node.js braintree

我使用Braintree nodejs Sdk作为我的一个项目, 我有使用customer.find()功能的问题。  origina link is here

当我通过用户ID时,如' 207'直接以这种方式,它正在工作。

var braintree = require("braintree");
var gateway = require("./bt");

 gateway.customer.find('207', function(err, customer) {              
               console.log("customer:",customer);           
 }); 

但是当我尝试传递动态ID时,它无效;

 btuserID  = data.userId;
 gateway.customer.find(btuserID, function(err, customer) {              
               console.log("customer:",customer);           
           }); 

我认为它的参数类型是字符串,所以如何在没有双引号的情况下传递参数?

完成错误:

/home/api/node_modules/loopback-connector-mysql/node_modules/mysql/lib/protocol/Parser.js:82
        throw err;
              ^
TypeError: undefined is not a function
    at CustomerGateway.find (/home/api/node_modules/braintree/lib/braintree/customer_gateway.js:37:20)

2 个答案:

答案 0 :(得分:5)

如果您尝试

console.log(typeof(btuserID));

我怀疑您会看到该类型为Number,如果是,请尝试以下建议。

将您的作业更改为此作为将数字转换为字符串。

 btuserID = data.userId.toString(); 

如果查看braintree Node.js库的源代码,您将看到它首先尝试修剪字符串。如果你对一个数字执行此操作,您可能会失败。

https://github.com/braintree/braintree_node/blob/master/src/braintree/customer_gateway.coffee

答案 1 :(得分:2)

我今天遇到了同样的问题。 你只需要这样做:

gateway.customer.find(JSON.stringify(btuserID), function(err,customer){
               console.log("customer:",customer);           
});