0

这是我想用 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;
4

1 回答 1

1

您不能告诉 Sails 以您尝试的方式从另一个模型中提取数据。本质上,您是在告诉 Sailsaddrdelivery_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();
    });
  }

};
于 2013-10-17T16:37:45.350 回答