0

これは、address.js モデルの属性を入力したい顧客モデルですが、Postman を使用して JSON を投稿すると、問題の原因についてのヒントがほとんどない 500 Validation Error が表示されます。私はセイル、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 に指示することはできません。本質的に、Sailsにはそのようなタイプがないため、 addranddelivery_addr属性が意味をなさないタイプであることを Sails に伝えています。Address.address

ライフサイクル コールバックの 1 つを使用して、アドレス モデルからデータを取得する必要があります。あなたのコードと説明から、住所が顧客ごとに共通なのか、それとも顧客ごとに異なる可能性が高いのかを正確に理解できません。後者の場合、別のモデルから 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 に答える