如何在Sails.js中嵌入和编写mongo对象(深度超过一级)?

时间:2014-01-16 21:40:30

标签: javascript node.js express sails.js

来自sails.js的例子,

// 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',
                        }
                  }
             },

两者都不起作用。我收到第二种情况下的“找不到属性的规则”,第一种情况下的“意外的令牌{”等错误。

2 个答案:

答案 0 :(得分: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支持关联。也许这会使它发挥作用。仍然是实验性的。

<强>更新即可。 使用关联功能,您可以在不同模型中强制使用模式并在它们之间创建引用,但到目前为止,您似乎无法嵌入它们 - 只能将它们与不同的集合/表关联起来。

答案 1 :(得分:1)

https://github.com/balderdashy/sails-mongo/issues/44

似乎他们已经计划将其作为功能请求进行规划。