others - json - 如何避免將數字轉換為字元串?

79 5

我正在從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` };


}



如何確保對象值以數字類型插入?

时间: 原作者:

139 3

根據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` };


}



原作者:
...