与自定义列名

时间:2016-05-30 01:30:47

标签: sails.js waterline

Sails Js面临严重问题。 所以,我有如下所述的一对多关系(摘自官方风帆documentation):

// myApp/api/models/User.js
// A user may have many pets
module.exports = {
  attributes: {
    firstName: {
      type: 'string',
      columnName: "first_name"
    },
    lastName: {
      type: 'string',
      columnName: "last_name"
    },

    // Add a reference to Pets
    pets: {
      collection: 'pet',
      via: 'owner'
    }
  }
};

和依赖模型:

// myApp/api/models/Pet.js
// A pet may only belong to a single user
module.exports = {
  attributes: {
    breed: {
      type: 'string'
      //column name will be 'breed' by default
    },
    typeProperty: {
      type: 'string',
      columnName: "type_property"
    },
    nameProperty: {
      type: 'string',
      columnName: "name_property"
    },

    // Add a reference to User
    owner: {
      model: 'user'
    }
  }
};

当我在查询后面的代码中调用时

User.find()
.populate('pets')
.exec(function(err, users) {
  if(err) // handle error

  // The users object would look something like the following
   [{
     id: 123,
     firstName: 'Foo',
     lastName: 'Bar',
     pets: [{
       id: 1,
       // !! Only this property is loaded !!
       breed: 'labrador',
       // !! This property is NOT loaded !!
       typeProperty: undefined,
       // !! This property is NOT loaded !!
       nameProperty: undefined,
       user: 123
     }]
   }]
});

基本上,似乎sails(水线如果是特定的)不是映射回属性,它具有指定的自定义“columName”并且与属性名称不同(例如存储在type_property列中的“typeProperty”)。

有没有人遇到过这种问题?

1 个答案:

答案 0 :(得分:1)

事实上,我遇到了这个问题。属性“columnName”无效。似乎Sails没有优先考虑该属性的模型常规命名。





尝试将模型属性名称更改为与数据库属性相等。

&# xA;

  type_property:{
键入:'string'
},
  




这应该会填充您的属性。在这里工作。





当有问题的属性是外键时,列名称可以正常工作。