如果条件不在节点js中工作

时间:2014-12-31 06:22:25

标签: javascript node.js if-statement

我正在使用nodejs和mongo db进行移动应用程序以获取服务器端功能。

我已经实现了在每个请求中发送的自定义标头,并且我有以下函数来检查标头值。

这是我的代码:

 /**
     * 
     * Check Request headers
     * @param : headers 
     * @returns : boolean
     * 
     * */
    function checkHeaders(data) {
        var customHeader = JSON.stringify(data.appsecret).valueOf().trim();
        var contentTypeHeader = JSON.stringify(data["content-type"]).valueOf().trim();
        if (contentTypeHeader === "application/x-www-form-urlencoded" && customHeader === "xxxxx") {
            return 1;
        } else {
            return 0;
        }
    }

这里我总是得到0作为响应,我检查了所有3个变量的值,即1。数据,2。 customHeader,
3。 contentTypeHeader
被正确接收。但if条件中的值不匹配,结果总是得到“0”。

任何建议都会有很大的帮助!

提前致谢!

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。数据参数本身是一个对象,不需要stringify操作。

这是更新的代码,工作正常 代码:

/**
     * 
     * Check Request headers
     * @param : headers 
     * @returns : boolean
     * 
     * */
    function checkHeaders(data) {
     if (data['content-type'] === "application/x-www-form-urlencoded" && data.appsecret === "xxxxx") {
            return 1;
        } else {
            return 0;
        }
    }

答案 1 :(得分:-1)

修改

好的,所以真正的问题是你在.valueOf之后使用JSON.stringify,它返回一个字符串的原始值,它不等于条件中的字符串;尝试删除str.valueOf(),并在需要时离开.trim()

试试这个,并注意==所在的===

return contentTypeHeader == "application/x-www-form-urlencoded" && customHeader == "xxxxx";

而不是:

    if (contentTypeHeader === "application/x-www-form-urlencoded" && customHeader === "xxxxx") {
        return 1;
    } else {
        return 0;
    }