others - json - 如何避免将数字转换为字符串?

我正在从Google Apps Script通过webhook向Mongo Stitch (使用http服务)发送对象,输入对象为{A=185, B=8, C=200} ,一旦插入数据库,它将变为 {A="185 ", B="8", C="200"},在数据库保存时,如何避免将数字转换为字符串?

在Google Apps脚本端,我有:


function sendToStitch(){


 var obj = {A=185, B=8, C=200};


 var options = {


 'method' : 'post',


 'payload' : obj


 };


 var insertID = UrlFetchApp.fetch('https://eu-west-1.aws.webhooks.mongodb-stitch.com/api/client/v2.0/app/timesheetstest-fgidp/service/sheets/incoming_webhook/import', options);


} 



在Stitch端,我有一个http服务:


exports = async function(payload) {


 const mongodb = context.services.get("mongodb-atlas");


 const eventsdb = mongodb.db("time");


 const eventscoll = eventsdb.collection("sheets");


 const result = await eventscoll.insertOne(payload.query);


 var id = result.insertedId.toString();


 if(result) {


 return JSON.stringify(id,false,false); 


 }


 return { text: `Error saving` };


}



如何确保对象值以数字类型插入?

时间: 原作者:

根据Google Apps Script的文件UrlFetchApppayload可以是字符串,字节数组,blob或JavaScript对象,

我认为这是数据在字符串中的原因,因为正在发送的对象被转换为:


{"A":"185","B":"8","C":"200"}



确保数字保持为数字的一种方法是以扩展JSON格式发送数据,首先,在Google Apps Script中将JavaScript对象转换为JSON字符串:


function sendToStitch(){


 var obj = {"A": {"$numberLong": 185}, 


"B": {"$numberLong": 8 }, 


"C": {"$numberLong": 200}};


 var options = {


 'method' : 'post',


 'contentType': 'application/json',


 'payload' : JSON.stringify(obj)


 };


 var insertID = UrlFetchApp.fetch('https://someurl/incoming_webhook', options);


} 



mongoDB Stitch Functions中,你可以使用EJSON.parse (),例如:


exports = async function(payload) {


 let doc = EJSON.parse(payload.query);


 const coll = context.services.get("mongodb-atlas");


 .db("time");


 .collection("sheets");


 const result = await coll.insertOne(doc);


 if(result) {


 return result;


 }


 return { text: `Error saving` };


}



原作者:
...