2016-01-03 108 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