2014-01-16 48 views
7

從sails.js例如,如何在Sails.js中嵌入和寫入mongo對象(多於一個級別)?

// Person.js

var Person = { 
     attributes: { 
     firstName: 'STRING', 
     lastName: 'STRING', 
     age: { 
      type: 'INTEGER', 
      max: 150, 
      required: true 
     } 
     birthDate: 'DATE', 
     phoneNumber: { 
      type: 'STRING', 
      defaultsTo: '111-222-3333' 
     } 
     emailAddress: { 
      type: 'email', // Email type will get validated by the ORM 
      required: true 
     } 
     } 
    }; 

現在我將如何添加EMAILADDRESS有一個家庭和辦公室的嵌入式領域?

試圖做到這樣說:

emailAddress: { { 

         work: { 
          type: 'email', 
         }, 
         personal: { 
          type: 'email', 
         } 
        } 
      }, 

emailAddress: { 
        attributes: { 

         work: { 
          type: 'email', 
         }, 
         personal: { 
          type: 'email', 
         } 
        } 
      }, 

都不起作用。第二種情況出現「第一種情況下出現」未發現規則的規則「等錯誤。

+0

您可以在Person中的emailAddress定義中使用類型json,然後使用注入器手動驗證所需的結構。 這可能會在將來由waterline解決,但在此之前這應該涵蓋您的問題 – HeberLZ

回答

10

好的,通過對此的一些線程。 看來Sails Waterline在這個階段不支持嵌入式MongoDB模式。 您可以編寫自己的貢獻或強制執行,但支持開箱即用(模型驗證)等也需要被黑客入侵。 https://github.com/balderdashy/sails-mongo/issues/44

不幸的是不支持其他選項 - sails-mongoose。 From where can we decide collection name in use of "sails-mongoose" package, in node.js + sailsjs?

更新。 從V0.10開始,Sails支持關聯。也許這會使它工作。仍是實驗性的

更新。 通過關聯功能,您可以在不同模型中強制使用模式並在它們之間創建引用,但到目前爲止,您似乎無法嵌入它們 - 只能將它們與不同的集合/表相關聯。

+0

Sails-mongo不允許爲嵌入文檔指定模式 – bunt

相關問題