2015-09-13 34 views
0

我目前正在開發一個需要處理數據存儲的方式具有很高通用性的項目。假設原則是用戶可以定義一個定製的模型,然後用基於他定義的模型的數據填充數據庫。mongodb與nodejs中的多態模型

到目前爲止,我的解決方案是將模型的定義保存在MongoDB集合中,然後使用DocumentFactory從其中生成模型。

DocumentFactory: function(description) { 

    var attributes = {}; 

    description.forEach(function(element, index){ 
     attributes[element.name] = { 
      type: "string", 
      required: true 
     }; 
    }); 

    var model = mongoose.Schema(attributes); 

    return mongoose.model('Meta', model);; 
} 

我的問題是,我可以把「元模型」只有一次,以後我會趕上一個錯誤: OverwriteModelError:無法覆蓋Meta模型編譯一次

實際上,模型編譯由MongoDB一勞永逸。我沒有找到覆蓋它的方法。

我看到2個解決方案:

  1. 找到一種方法來定義模型不編譯它。這個解決方案可能是最好的,所以我可以使用mongo驗證系統。
  2. 爲模型創建一個獨特的名稱,但它似乎是一個非常糟糕的解決方案,所以我可能會有成千上萬的模型。

任何想法? 在此先感謝

回答

0

我想你的第一個解決方案,或者你想要做的不是很優雅,因爲基本上你想要在其中使用一個具有不同模型的集合。這沒有什麼意義。在這一點上忘記使用ORM並建立你自己的混亂。

我會選擇第二種解決方案或者,也許,mongodb不是你在這裏需要的。你可以更好地解釋你的情況,我們可以嘗試幫助你找到更好的解決方案。