2013-10-05 28 views
0

以下是我想用address.js模型中的屬性填充的客戶模型,但是,當我們使用Postman發佈JSON時,我得到的500驗證錯誤沒有太多提示至於問題的原因。任何幫助將不勝感激,因爲我是新來的帆,JS,Javascript和編程,所以我的語法可能是錯誤的!無法從Sails.js中的其他模型中提取屬性

//Customer.js 

var Customer = { 
    attributes: { 
     honorific: 'STRING', 
     first_name: 'STRING', 
     middle_name: 'STRING', 
     last_name: 'STRING', 
     addr:'Address.address', 
     delivery_addr:'Address.address', 

     fullName:function() { 
      return this.first_name + ' ' + this.last_name; 
     } 
    } 
}; 

module.exports = Customer; 

回答

1

您不能告訴Sails從您嘗試的方式從另一個模型中獲取數據。實質上,你告訴Sails addrdelivery_addr屬性的類型是Address.address,這是沒有意義的,因爲Sails中沒有這種類型。

您需要做的是使用生命週期回調之一從地址模型中提取數據。從您的代碼和解釋中,我無法準確瞭解每個客戶的地址是否通用,或者更可能是每個客戶的地址不同。如果後者是這種情況,我無法真正理解爲什麼你想將另一個模型的地址提供給Customer模型。也許如果你更多地解釋了你想要達到的目標以及爲什麼,我可能會給你一個更好的答案。

在任何情況下,您將如何使用beforeValidation生命週期回調來從另一個模型(未經測試)中提取數據。

module.exports = { 

    attributes: { 
    honorific: 'STRING', 
    first_name: 'STRING', 
    middle_name: 'STRING', 
    last_name: 'STRING', 
    addr: 'json', 
    delivery_addr: 'json', 
    fullName:function() { 
     return this.first_name + ' ' + this.last_name; 
    } 
    }, 

    beforeValidation: function(values, cb) { 
    Address.findOne(1).done(err, address) { 
     if(err) return cb(err); 
     values.addr = address.toJSON(); 
     values.delivery_addr = address.toJSON(); 
     cb(); 
    }); 
    } 

}; 
相關問題