Stringify()强制int值javascript(node.js)
大家好,我一直在尝试将我的Json.stringify的数据强制为int,因为在我的mongodb上它以字符串的形式返回,所以在我的模式上,我需要先这样做Stringify()强制int值javascript(node.js),javascript,json,node.js,mongodb,Javascript,Json,Node.js,Mongodb,大家好,我一直在尝试将我的Json.stringify的数据强制为int,因为在我的mongodb上它以字符串的形式返回,所以在我的模式上,我需要先这样做 var UserSchema = mongoose.Schema({ username:{ type: String, index:true }, influenceid:{ type:String }, question:{ type:S
var UserSchema = mongoose.Schema({
username:{
type: String,
index:true
},
influenceid:{
type:String
},
question:{
type:String
},
amount:{
type:String //i need this to be a type:Number instead of string
}
});
在我的dialog.js中,我将json数据放在哪里
socket.emit('dollar quest', JSON.stringify(result[0]),
JSON.stringify(result[1]), inUserId, myuserid, 'dquest');
在我的服务器上,我获取这样的数据,然后将其扔给我的mongodb
socket.on('dollar quest', function(dolquest,dolamnt,uid,stud,stat){
var info = new InfoUser({
username: stud,
amount: dolamnt,
question: dolquest
});
InfoUser.createUser(info,function(err,user){
if(err)throw err;
console.log(user);
});
});
但是我的mlab上的输出是这样的
“用户名”:“stsam1”,
“金额”:“12500\”,
“问题”:“你好吗?”,
我如何将我的金额转换为type:Number,这样它就会像这样返回到我的mlab上
“金额”:12500,
您可以提供一个toJSON.stringify
,当键名为“amount”
时,它会将值转换为数字:
然后
函数替换器(键、值){
返回键==“金额”?+值:值;
}
变量对象={
用户名:“a”,
影响ID:“b”,
问题:“c”,
金额:“42”
};
var json=json.stringify(对象,替换符,2);
log(json)代码>您可以将金额字段设置为数字
,然后它将自动从字符串转换为数字
amount:{
type: Number
}
或者你也可以像这样使用parse.float
socket.on('dollar quest', function(dolquest,dolamnt,uid,stud,stat){
var info = new InfoUser({
username: stud,
amount: parseFloat(dolamnt),
question: dolquest
});
InfoUser.save(function(err,user){
if(err)throw err;
console.log(user);
});
});
我喜欢这个,它对我很有效,所以我会回答我自己的问题,但谢谢你的帮助,T.J和Shaib先生。这就是我所做的
socket.emit('dollar quest', JSON.stringify(result[0]),
JSON.stringify(result[1]), inUserId, myuserid, 'dquest');
并补充说
socket.emit('dollar quest', JSON.stringify(result[0]),
JSON.stringify(result[1]).replace(/\"/g, ""), inUserId, myuserid, 'dquest');
所以这个想法被取代了,所以TJ爵士的想法是正确的,但是我的JSON.Stringify(结果[1])是我在服务器上和模式上的dolamnt,当我尝试将其更改为类型时:number is不起作用并且不返回错误为什么??@TheGinxx009:“dolamnt”在英语中不是一个单词,恐怕我无法推断你的意思。您询问如何确保amount(对象中的字符串)是JSON中的数字。以上就是你如何做到的。好的,我现在明白了。dolamnt被缩短是因为它是一个变量“dolaramount”就是它的意思。更正,先生。很抱歉,字符串不是对象。这是一个一般变量你试过哪一个?注意:应该Number
而不是Number
type:Number on my schema和parseFloat(dolamnt),在服务器端,当我尝试此操作时,它总是说infousers验证失败
您可以尝试使用相同的用户名
可以尝试使用不同的用户名并尝试InfoUser。像我的代码一样保存
对不起,先生,我不明白您在说什么
socket.emit('dollar quest', JSON.stringify(result[0]),
JSON.stringify(result[1]), inUserId, myuserid, 'dquest');
socket.emit('dollar quest', JSON.stringify(result[0]),
JSON.stringify(result[1]).replace(/\"/g, ""), inUserId, myuserid, 'dquest');