【问题标题】:Cannot pull attributes from another model in Sails.js无法从 Sails.js 中的另一个模型中提取属性
【发布时间】:2013-10-05 19:11:26
【问题描述】:

这是一个客户模型,我想用 address.js 模型中的属性填充它,但是,当我们使用 Postman 发布 JSON 时,我收到 500 Validation Error 并没有太多关于问题原因的提示。任何帮助都将不胜感激,因为我是sails、js、Javascript和编程的新手,所以我的语法可能是错误的!

//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;

【问题讨论】:

    标签: javascript node.js mongodb sails.js


    【解决方案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();
        });
      }
    
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 2020-03-20
      • 1970-01-01
      • 2019-09-20
      • 2014-04-27
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      相关资源
      最近更新 更多