2016-09-09 29 views
0

我試圖用這個JS函數來刪除一個表中的一行在Oracle數據庫中的工作:甲骨文刪除語句未JS

deleteDirection(directionId, callback) { 
if (!this.connected) { 
    return Promise.reject(new Error('not connected')).asCallback(callback) 
} 
const connection = this.connection 

const task = Promise.coroutine(function*() { 
    const conn = yield connection 
    const query = 'DELETE FROM directions WHERE direction_id = :directionId' 
    const result = yield conn.execute(query, { directionId }, { 
    outFormat: oracle.OBJECT, 
    }) 
    .then(directionDeleted => { 
    if (directionDeleted.rowsAffected === 0) { 
     return Promise.reject(new Error('invalid number')) 
    } 
    return Promise.resolve(directionDeleted) 
    }) 
    .catch(err => Promise.reject(new Error(err))); 

    return Promise.resolve(result) 
}) 
return Promise.resolve(task()).asCallback(callback) 
} 

的功能完成,沒有任何問題,但該行不會被刪除,如果我在Oracle SQL Developer上嘗試相同的語句,它可以很好地工作,可能是什麼問題?

回答

0

嘗試這種情況:

deleteDirection(directionId, callback) { 
if (!this.connected) { 
    return Promise.reject(new Error('not connected')).asCallback(callback) 
} 
const connection = this.connection 

const task = Promise.coroutine(function*() { 
    const conn = yield connection 
    const query = 'DELETE FROM directions WHERE direction_id = :directionId' 
    const result = yield conn.execute(query, { directionId: directionId}, { 
    outFormat: oracle.OBJECT, 
    autoCommit: true 
    }) 
    .then(directionDeleted => { 
    if (directionDeleted.rowsAffected === 0) { 
     return Promise.reject(new Error('invalid number')) 
    } 
    return Promise.resolve(directionDeleted) 
    }) 
    .catch(err => Promise.reject(new Error(err))); 

    return Promise.resolve(result) 
}) 
return Promise.resolve(task()).asCallback(callback) 
} 

通知改變到綁定變量和使用自動提交的。

您使用的是翻譯?

+0

''後面的'autoCommit:true'這一行缺少你是正確的,autoCommit是解決方案,但是不需要改變綁定變量,與{directionId}很好,謝謝你的幫助,是的,該項目有一個翻譯 –

0

關注NodeOracle實施例和通參數作爲數組:

const result = yield conn.execute(query, [ directionId ], { 
    outFormat: oracle.OBJECT, 
    }) 

https://github.com/oracle/node-oracledb/blob/master/examples/select1.js

+0

感謝,但仍然沒有刪除,我甚至試過這樣: 常量查詢= 'DELETE FROM WHERE方向= direction_id 630' const的結果=產量conn.execute(查詢,{},{ outFormat:oracle.OBJECT, }) 只是爲了測試,但它沒有刪除 –

+0

有趣。爲了測試的目的,您是否可以在沒有發生器功能的情況下進行測試,並共享結果? –

+1

嗨,我已經解決了它,問題是在'outFormat:oracle.OBJECT,' –