为什么nodejs在我的BIT(1)行上返回笑脸?

时间:2015-05-30 12:38:03

标签: javascript mysql node.js

我在Google上搜索如何将10存储为值。我选择了BIT(1)数据类型:enter image description here

然后,对于用户身份验证,我将该值存储在TEMPUSER内的临时nodejs对象中:( gender我的users表中的列)

db.query('SELECT * from users WHERE id = ' + db.escape(userID) + ' AND password = ' + db.escape(userPassword) + '', function(err, results) {
    TEMPUSER = {
        gender: results[0].gender
    }
});

现在,当我使用:/ / p>来控制.log TEMPUSER

console.log('Gender Data: ' +TEMPUSER.gender);

显示:

enter image description here

多么奇怪?不应该显示10

编辑:

对于此特定用户,性别行值也在mysql中设置为1

enter image description here

2 个答案:

答案 0 :(得分:4)

我怀疑你是否

console.log(typeof TEMPUSER.gender);

...您发现它object,因为the plugin you're usingBIT列映射到NodeJS Buffer个对象。因此,您只需输入一个条目Buffer+语句中的console.log会将其转换为包含一个字符的字符串,字符代码为U + 0001。在我的Windows系统上,如果我这样做:

console.log("\u0001");

......我也笑脸。

相反,请使用缓冲区:

TEMPUSER = {
    gender: results[0].gender[0]
}

我查看查询返回NULL时得到的内容;可能是一个空缓冲区(上面会给你undefined),可能是null(上面会给你一个错误)。

答案 1 :(得分:0)

这真的很有趣,应该保存那种尴尬的行为。

关于系列说明:

首先,您应该使用console.log(result); [[1,"a",false] ,[1,"a",true] ,[1,"b",false] ,[1,"b",true] ,[1,"c",false] ,[1,"c",true] ,[2,"a",false] ,[2,"a",true] ,[2,"b",false] ,[2,"b",true] ,[2,"c",false] ,[2,"c",true] ,[3,"a",false] ,[3,"a",true] ,[3,"b",false] ,[3,"b",true] ,[3,"c",false] ,[3,"c",true]] 数据类型保存布尔值。 (可选,限制为一个字符。)

第二,在决定性别的数据类型时,快速搜索结果如下:

Storing sex (gender) in database

祝你好运!