2016-01-03 63 views
0

扬鞭定义可以包含JSON引用($ REF),例如:

{"paths": { 
      "/malts": { 
       "get": { 
        "responses": { 
         "200": { 
          "schema": { 
           "$ref": "#/definitions/Malt" 
          } 
         } 
        } 
      } 
     } 
    } 

存储在MongoDB中这个JSON对象似乎工作,但后来在更新时,我得到以下错误:

MongoError: The DBRef $ref field must be following by a $id field

这是否真的意味着JSON引用不能被储存在MongoDB中,因为蒙戈使用$裁判也为their internal database reference

回答

0

我相信这是在您使用mongodb驱动程序。什么客户端库,以及您使用的是哪个版本?

+0

我使用的蒙戈快车(HTTPS的最新版本: //github.com/andzdroid/mongo-express) – pfust75

0

我试图在Mongo中存储json模式对象(带有$ ref键)时遇到了同样的问题。

我可以用一个非常简单的蒙戈对象逃逸库解决此问题:https://www.npmjs.com/package/mongo-json-escape

简单的例子:

var mje = require('mongo-json-escape'); 
var safeToStoreObject = mje.escape({"hello$world":"hello"}); 
var readyToUseObject = mje.unescape({"hello\uFF04world":"hello"}); 
+0

要非常小心的是,无论你从mongo中提取相关物品,你都可以运行unescape过程。转义字符看起来非常接近美元符号(它们使用“U + FF04:全额符号”作为转义字符,当然这看起来像一个美元符号) – Jon

+0

在MongoDB文档中,它指出字段无法启动美元符号“$”,不能包含句点“。”:https://docs.mongodb.com/manual/reference/limits/ – Stu