Stringify()强制int值javascript(node.js)

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

大家好,我一直在尝试将我的Json.stringify的数据强制为int,因为在我的mongodb上它以字符串的形式返回,所以在我的模式上,我需要先这样做

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,

您可以提供一个to
JSON.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');