Sails 사용자 정의 모델 방법

1781 단어 Model

Sails 사용자 정의 모델 방법


Sails에서 모델은 원시적인 정적 방법을 제공했다. 예를 들어.create(), .update(), .destroy(), .find(), 등.실제 업무에서 흔히 하는 작업은 대상을 저장할 때 대상이 존재하지 않으면 이 대상을 추가하고, 그렇지 않으면 업데이트하는 것이다. 이것은 insertOrUpdate 작업이다.모델에서는 이 방법을 제공하지 않았다.
MongodB는 업데이트 대상에 {upsert=true} 이 옵션을 추가하는 것과 유사한 원생 방법을 제공했지만, 되돌아오는 결과는 숫자이며 업데이트 대상이 아닙니다. 이것은 수요에 맞지 않습니다.
모델을 확장하는 정적 방법을 고려하십시오.sails는 매우 편리한 확장 지원을 제공합니다.
모델.js에 다음과 같은 방법을 추가합니다.
module.exports.models = {
  insertOrUpdate: function(key, record, CB){
    var self = this; // reference for use by callbacks
    var where = {};
    where[key] = record[key]; // keys differ by model
    this.find(where).exec(function findCB(err, found){
      if(err){
        CB(err, false);
      }
      // did we find an existing record?
      if(found && found.length){
        self.update(record[key], record).exec(function(err, updated){
          if(err) { //returns if an error has occured, ie id doesn't exist.
            CB(err, false);
          } else {
            CB(false, found[0]);
          }
        });
      }else{
        self.create(record).exec(function(err, created){
          if(err) { //returns if an error has occured, ie invoice_id doesn't exist.
            CB(err, false);
          } else {
            CB(false, created);
          }
        });
      }
    });
  }
};

이렇게 하면 됩니다.create 방법을 호출하는 것처럼 사용자 정의 insertOrUpdate 방법을 호출합니다.참조: http://stackoverflow.com/a/25938914http://sailsjs-documentation.readthedocs.org/en/latest/concepts/Models/

좋은 웹페이지 즐겨찾기