在 MongoDB Stitch 函数中抑制值类型
Suppress value types in MongoDB Stitch function
一个Stitch function returns value types for each non-string field. I believe this is because functions return data in MongoDB Extended JSON.
MongoShell,另一方面,returns标准JSON,没有值类型。
如何抑制 MongoDB 函数 返回的值类型?是否可以将 EJSON 转换回 JSON?
对于日期字段,例如 Mongo Shell returns:
"dob" : ISODate("1995-01-11T00:00:00.000-07:00")
Stitch 函数中的相同查询 returns:
"dob": {
"$date": {
"$numberLong": "232182000000"
}
我的 Stitch 函数如下所示:
exports = function(){
const collection = context.services.get("mongodb-atlas").db("mydb").collection("mycollection");
const doc = collection.find().toArray();
return doc;
};
有没有可以去除值类型的辅助函数?像...
exports = function(){
const collection = context.services.get("mongodb-atlas").db("mydb").collection("mycollection");
const doc = collection.find().toArray();
const noValueTypes = doc.stripValueTypes()
return noValueTypes;
};
当一个Function结果传递给客户端时,确实序列化为EJSON。
理想情况下,您的客户端可以将 EJSON 解析回常规的 JS 对象,例如与 EJSON library, which is also built into the Stitch SDK.
当然,如果你用的是Stitch SDK,calling the function directly就更好了。
另一种选择是使用 response object 传递 JSON,像这样:
exports = function(request, response) {
// ... get data ...
response.addHeader(
"Content-Type",
"application/json"
);
response.setBody(JSON.stringify(myData));
};
请注意,JSON 不能表示某些特殊的 BSON 类型,例如对象 ID,因此在决定将哪些数据写入 return 时,您需要牢记这一点。
一个Stitch function returns value types for each non-string field. I believe this is because functions return data in MongoDB Extended JSON.
MongoShell,另一方面,returns标准JSON,没有值类型。
如何抑制 MongoDB 函数 返回的值类型?是否可以将 EJSON 转换回 JSON?
对于日期字段,例如 Mongo Shell returns:
"dob" : ISODate("1995-01-11T00:00:00.000-07:00")
Stitch 函数中的相同查询 returns:
"dob": {
"$date": {
"$numberLong": "232182000000"
}
我的 Stitch 函数如下所示:
exports = function(){
const collection = context.services.get("mongodb-atlas").db("mydb").collection("mycollection");
const doc = collection.find().toArray();
return doc;
};
有没有可以去除值类型的辅助函数?像...
exports = function(){
const collection = context.services.get("mongodb-atlas").db("mydb").collection("mycollection");
const doc = collection.find().toArray();
const noValueTypes = doc.stripValueTypes()
return noValueTypes;
};
当一个Function结果传递给客户端时,确实序列化为EJSON。
理想情况下,您的客户端可以将 EJSON 解析回常规的 JS 对象,例如与 EJSON library, which is also built into the Stitch SDK.
当然,如果你用的是Stitch SDK,calling the function directly就更好了。
另一种选择是使用 response object 传递 JSON,像这样:
exports = function(request, response) {
// ... get data ...
response.addHeader(
"Content-Type",
"application/json"
);
response.setBody(JSON.stringify(myData));
};
请注意,JSON 不能表示某些特殊的 BSON 类型,例如对象 ID,因此在决定将哪些数据写入 return 时,您需要牢记这一点。