我有一个非常旧的轨道2.3.18,Ruby1.9.3,RSPEC1.x应用程序,我们正在升级,并且其中有静止的认证。因此,我已经用设计1.0.11代替了。我可以登录到应用程序,但是我的测试不会运行;这是所讨论的测试require'spec_helper'describeCategoriesControllerdocontext"Asaloggedinuser"dobeforedologin_usercurrent_firm=mock_model(Firm,:id=>1)controller.stub!(:current_firm).and_return(current_firm)enddesc
我正在尝试在Grails/GORM/mongodb插件/MongoDB中实现一个简单的“插入或更新”(所谓的“upsert”)方法。我在Hibernate中使用的方法(使用合并)因重复键错误而失败。我推测merge()可能不是mongodbGORM中受支持的操作,并尝试通过GMongo获取native更新插入方法。我终于有了一个可用的版本(如下所示),但这可能不是最好的方法,因为向要保存的对象添加任何字段都会悄无声息地破坏代码。publicvoidupsertPrefix(p){defo=newBasicDBObject()o.put("_id",p.id)o.put("someVal
我的grails应用程序可以连接到我的本地mongodb并且工作正常,但是当我部署到cloudfoundry时,我在尝试连接到cf上的mongodb时遇到连接被拒绝的错误。我的应用程序绑定(bind)了一个mongodb服务,但它仍然无法连接?barry-alexanders-MacBook-Pro:~barryalexander$vmc应用程序+-------------+----+---------+-------------------------+-----------------+|Application|#|Health|URLS|Services|+-----------
我正在开发Grails应用程序。我们有一个名为User的域对象,User的属性之一是Role对象列表。角色有一些属性,其中之一是“名称”。我需要找到在其角色列表属性中具有特定名称角色的所有用户对象。User:ListrolesRole:Stringname因此,给定一个用户列表,我需要找到在其角色列表属性中具有名为“SUPERUSER”的角色的所有用户。后端的数据库是MongoDB,所以我们不能使用SQL查询或类似的东西(应用程序根本不使用Hibernate)。据我所知,动态查找器和CriteriaBuilder解决方案都可以。如有任何帮助,我们将不胜感激。我想我忽略了一些明显的事情,
我使用gmongo(用于Grails)库将数据插入mongodb。我想插入独特的元素。我尝试为MongoDB创建一个唯一索引:db.collection.ensureIndex({"object_id":1},{unique:true})但是,当我尝试通过web服务同时插入多次一次数据时,会出现一些重复的元素。也许,当我插入500个文档时,我得到了3-5个重复的元素提前致谢。 最佳答案 您可以将函数ensureIndex和update方法与upsert参数(true)结合起来。语法:db.collection.update(,,,)
我需要检查对象的先前状态,以便记录发生的更改。我正在使用dirtyPropertyNames来提取此类属性,但它没有给我关联字段的持久值,我的代码在下面给出classEmployee{StringnameStringtitleStringcityListaddressesListskillsstatichasMany=[skills:Skill,addresses:Address]}staticbelongsTo=[Skill]staticembedded=['skills','addresses']}在我的beforeUpdate()方法代码中,当我检查dirtyProperties
鉴于以下情况,我如何返回所有包含具有TypeOfBar=="Big"的Bars的Foos并且将Foos的Bars限制为仅具有TypeOfBar=="的Bars大”也一样?publicclassFoo{publicstring_id{get;set;}publicListBars{get;set;}}publicclassBar{publicstring_id{get;set;}publicstringTypeOfBar{get;set;}}我可以很容易地得到第一部分(所有Foos和特定类型的Bars):varclient=newMongoClient("myconnectionstri
我使用集成测试和Grails脚手架将数据写入mongoDB数据库时遇到问题。尝试从“列表”类型页面中选择域实例时,我收到错误消息“找不到ID为null的[domainname]”。我确定这是因为Grailsurl[controller]/[action]/[id]。此id是一个字符串,需要将其转换为ObjectId以用于Grails查询。有没有办法做到这一点,使其影响指定的域,甚至更好的是,同时影响所有域?我想在我编写我的应用程序时,我可以从操作方法中将其转换为ObjectId,但我希望让脚手架工作或提供一个全局解决方案。 最佳答案
我所知道的:mongod正在运行,数据库存在,集合存在,我可以使用mongodb控制台进行插入,并且到mongod实例的连接是由Grails建立的(即我可以查询等等)。其他细节:Grails2.01、mongodb插件1.0.0RC4、hibernate插件2.01、mongodb2.0.3classNode{staticmapWith="mongo"staticconstraints={}ObjectIdidIntegersomeId//someIdcanbenullorjustnon-existentStringname}什么不起作用:我无法通过GORM插入任何数据,即使我明确将f
当使用MongoDB作为数据源时,我如何(应该)配置Grails集成测试以自动回滚事务?(我使用的是Grails2.2.1+mongodb插件1.2.0) 最佳答案 对于spock集成测试,我定义了一个MongoIntegrationSpec,它可以控制清理测试数据。dropDbOnCleanup=true//将在每个功能方法执行后删除整个数据库。dropDbOnCleanupSpec=true//规范完成后将删除整个数据库。dropCollectionsOnCleanup=["collectionA","collectionB",