当前位置: 首页 > 知识库问答 >
问题:

不能持久销毁到数据库,可以检索

孙海
2023-03-14

我有一个使用主干的rails应用程序。在控制台中,我可以创建一个集合,从服务器(3)获取文档,并通过检查长度进行确认

单据=新单据()
文档。fetch()
文档。长度
3

去拿一份那些文件

d1=文件。在(0)对象{cid=“c3”,已更改={…},属性={…},更多…}

销毁文件

d1。破坏();删除http:localhost:3000/docs/1
204无内容23ms jquery。js?body=1(第8215行)对象{readyState=1,setRequestHeader=function(),getAllResponseHeaders=function(),更多…}

检查文档的长度

>>> docs.length

2

创建一个新集合

docz=新文档();

从服务器获取文档。注意"304未修改消息"

多克斯。fetch();获取http://localhost:3000/docs 304 Not Modified 31ms
jquery。js?body=1(第8215行)对象{readyState=1,setRequestHeader=function(),getAllResponseHeaders=function(),更多…}

检查长度。3点了,我还以为是2点呢。

>>> docz.length

3

我不知道为什么当我打电话给destroy时,如果有3条记录,我会收到一条没有内容的消息

204 No Content
        23ms

当我从数据库中检索记录时,我访问数据没有问题

d.get('title')
>>>"diet book"

我在模型上设置了一个url,所以我应该能够删除我认为是独立的记录

   url : function() {
       var base = 'docs';
       if (this.isNew()) return base;
       return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
    },

然而,我也不能删除通过一个集合docs.at(0)。销毁有同样的效果。

这是我在rails控制器中的销毁功能

class DocsController < ApplicationController


    respond_to :json
    ....

   def destroy
     respond_with Doc.find(params[:id])
   end 
end 

模型

 class Doc < ActiveRecord::Base
  attr_accessible :keywords, :text, :title
 end

更新一位对此帖子发表评论的人指出,当我调用destroy时,我应该销毁一些东西,但我认为对对象调用destroy会销毁该对象

d.destroy()  #should destroy d, shouldn't it?

这是我从文件中了解到的

 book.destroy({success: function(model, response) {
  ...
}});

事实上,当我对一个对象调用保存()时,它会将该对象保存到数据库中

d.save(); #this works, so why not d.destroy();

共有1个答案

商麒
2023-03-14

在主干代码中执行此操作时:

d.destroy();

您将触发对服务器的销毁请求,客户端模型将被销毁和清理。您的服务器代码必须通过销毁服务器端模型来处理销毁请求;您的destroy控制器不会这样做:

def destroy
  respond_with Doc.find(params[:id])
end

所要做的就是从数据库中取出相应的Doc,并将其发送回客户端:您的destroy控制器需要销毁服务器端模型。您需要调整控制器方法以包括:

doc = Doc.find(params[:id])
doc.destroy

对查找和销毁调用进行一点权限检查、错误检查和异常处理也可能是个好主意。

 类似资料:
  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • 我正在开发一个服务,在该服务中,我侦听队列,反序列化接收到的消息,并将它们持久化到数据库(Oracle)。大致情况: 在缺省消息侦听器bean中,我设置并发性和setSessionTransactived(true)。这足以使整个onMessage具有事务性吗?因此,在一个事务中接收并保存一条消息,并在其中任何一点出现故障时回滚?当试图保存特定消息时,我尝试对其抛出异常,消息确实被回滚到队列,侦听

  • 我想创建一个作业,但我想在没有任何数据库持久性的情况下运行它。不幸的是spring-batch要求以某种方式将作业循环写入数据库的,从而使我至少提供某种带有transactionmanager和EntityManager的db。 是否可以阻止元数据并独立于TXManager和数据库运行? 更新:

  • 我正在尝试将嵌入式数据库derby与spring框架结合使用。我可以插入数据并读取它。除了数据库没有持久化之外,一切都很好。当我关闭应用程序并再次运行时,数据不存在。我猜数据库是再次创建的,但不知道为什么。 我的代码: 和Spring的输出日志是 create-db.sql内容是 解决方案:接受的答案指向正确的方向,但误差为db;create=true无法启动。然后,我查看了Netbeans ID

  • 在docker compose v3容器关闭并重新启动后,我很难持久化postgres数据。这似乎是一个常见的问题,但经过大量搜索,我一直无法找到有效的解决方案。 我的问题与此类似:如何使用卷在dockerized postgres数据库中持久化数据,但解决方案不起作用-因此请不要关闭。我将通过下面的所有步骤来复制这个问题。 这是我的docker-compose文件: 这是我调出并写入数据库后的终

  • 问题内容: 我在apache和mod_wsgi和PostgreSQL中使用django(都在同一主机上),并且我需要处理很多简单的动态页面请求(每秒数百个)。我面临的问题是,瓶颈是django没有持久的数据库连接,并在每个请求上重新连接(大约需要5毫秒)。在进行基准测试时,我得到了持久连接,我可以处理近500 r / s,而没有连接时,我只能得到50 r / s。 有人有什么建议吗?如何修改Dja