2016-11-02 8 views
0

DB行を削除する関数があります。この関数は、削除すべき行のidを取得します。また、関数は削除された行を返して、何らかのテキスト出力を実行する必要があります。DB操作を終了した後、ブルーバードの約束を返す

deleteProcess(processToDeleteId: any): Promise<ProcessInstance> { 
    let deletedProcess; 
    let value; 

    for (let key in processToDeleteId) { 
     if (processToDeleteId.hasOwnProperty(key)) { 
      value = processToDeleteId[key]; 
     } 
    } 

    this.sequelize.query("select * from Processes where processId = ?", 
     { replacements: [value], type: this.sequelize.QueryTypes.SELECT }) 
     .then(function (processes) { 
      for (let item in processes) { 
       if (processes.hasOwnProperty(item)) { 
        deletedProcess = processes[item]; 
        console.log(deletedProcess); 
       } 
      } 

     }) 
     .delay(20); 

    let that = this; 
    return new Promise<ProcessInstance>(
     (function (resolve, reject) { 
      that.sequelize.query("delete from Processes where processId = ?", 
       { replacements: [value], type: that.sequelize.QueryTypes.DELETE }) 
       .then(function() { 
        console.log('Deleted successfully'); 
        return deletedProcess; 
       }) 
      reject(function (err) { 
       console.log(err); 
      }) 
     }) 
    ) 
}; 

問題は、関数は、それが削除された行をロードし、項目を削除するサームでうまく動作しますが、必要に

答えて

1

あなたは決意を呼び出すことはありません行を返していませんプロビジョニングコンストラクタを使用して作成されたプロミスに値を設定する場合。それは、私はここに約束コンストラクタが必要だとは思わない。

これを行うと機能しますか?ところで

return that.sequelize.query("delete from Processes where processId = ?", 
     { replacements: [value], type: that.sequelize.QueryTypes.DELETE }) 
     .then(function() { 
      console.log('Deleted successfully'); 
      return deletedProcess; 
     }) 
     .catch(console.log) 

あなたはarrow function

を使用している場合、あなたは let that = this;を行う必要はありません。
関連する問題