抑制MongoDB Stitch函数中的值类型

时间:2019-03-22 19:21:13

标签: mongodb mongodb-stitch

Rect.fromCircle返回每个非字符串字段的值类型。我相信这是因为函数在Stitch function中返回数据。

另一方面,Mongo Shell返回标准JSON,并且没有值类型。

如何抑制MongoDB函数返回的值类型?可以将EJSON转换回JSON吗?

例如,对于日期字段,Mongo Shell返回:

"dob" : ISODate("1995-01-11T00:00:00.000-07:00")

Stitch函数中的相同查询返回:

"dob": {
  "$date": {
    "$numberLong": "232182000000"
  }

我的缝合功能如下:

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;
};

1 个答案:

答案 0 :(得分:1)

将Function结果传递给客户端时,确实将其序列化为EJSON。

理想情况下,您的客户端可以将EJSON解析回常规JS对象,例如EJSON库,该库也内置在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,因此在确定要返回的数据时,请牢记这一点。