【问题标题】:Sails Js Destroy recordSails Js 销毁记录
【发布时间】:2026-01-24 12:20:02
【问题描述】:

我想从我的 SQL 数据库中删除一条记录。这很强大,因为当我试图找到记录时,我成功地得到了它。但是当我尝试删除它时,我遇到了错误。

Service.find({id:serviceId}).exec(function(err, srv){

  if(err){res.json({err:err})}

  // some script to verify if the user can remove this record 
  // ....

  if(canRemove){

    Service.destroy({id: serviceId}).exec(function(err){
      if(err){res.json({err:err})}
      res.json('record removed');
    })

  }

})

我错过了什么吗?

编辑:错误:

【问题讨论】:

  • 您遇到了什么错误?
  • 我编辑帖子时出现错误@yBrodsky
  • 这是一个奇怪的错误,打败了我。老实说,那条水线(Sails ORM)是一团糟。
  • 完全同意@yBrodsky,它知道如何让人沮丧:x

标签: javascript sails.js


【解决方案1】:

代码似乎在if(err) 块中的res.json 处崩溃。

更改此代码:

Service.destroy({id: serviceId}).exec(function(err){
  if(err){res.json({err:err})}
  res.json('record removed');
})

到这里:

Service.destroy({id: serviceId}).exec(function(err){
  if(err){
    // sails.log.error('Error', err);
    return res.serverError('Something went wrong');
  }
  res.json('record removed');
})

【讨论】:

  • 嗨@Sangharsh,即使有了这个改变,我仍然有一个错误(现在是 res.serverError )。我有可能因为我的风帆模型迁移是“安全的”吗?
  • 只是确认一下,您是否使用'Something went wrong' 代替{err:err}?因为您的 err 对象很可能是循环的,因此会给序列化带来麻烦。
  • 我不确定您的问题,但是是的,我已将 {err:err} 更改为“出了点问题”,但我遇到的错误看起来像您说的那样..
【解决方案2】:

我终于找到了解决方案。

因为当我将“return res.serverError('Something wrong')”更改为“return res.serverError(err)”时,我收到了这条消息:

Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_BAD_FIELD_ERROR: Champ 'model.undefined' unknown in order clause
at ....

所以我做了一些研究并通过添加主键来编辑我的服务模型,正如@sgress454 在这篇文章中所说:Cannot update attributes in Sails.js model instance,然后我就可以完美地删除记录了。

感谢您的帮助。

【讨论】: