Javascript Oracle delete语句在JS中不起作用

Javascript Oracle delete语句在JS中不起作用,javascript,node.js,database,oracle,delete-row,Javascript,Node.js,Database,Oracle,Delete Row,我正在尝试使用以下JS函数从Oracle数据库的表中删除一行: deleteDirection(directionId, callback) { if (!this.connected) { return Promise.reject(new Error('not connected')).asCallback(callback) } const connection = this.connection const task = Promise.coroutine(function* ()

我正在尝试使用以下JS函数从Oracle数据库的表中删除一行:

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上尝试相同的语句,效果会非常好,可能会出现什么问题?

请遵循NodeOracle示例并将参数作为数组传递:

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

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)
}
注意bind变量的更改和autoCommit的使用


你用的是运输机吗

谢谢,但仍然没有删除,我甚至尝试了以下方法:const query='DELETE FROM direction_id=630'const result=yield conn.execute(query,{},{outFormat:oracle.OBJECT,}),只是为了测试,但删除并不有趣。为了测试,你能在没有生成函数的情况下完成并共享结果吗?嗨,我已经解决了,问题是在'outFormat:oracle.OBJECT'之后缺少了这行'autoCommit:true',你是对的,autoCommit是解决方案,但是没有必要更改bind变量,{directionId}很好,谢谢你的帮助,是的,这个项目有一个传送机