我试图使用GORM为Mongo的低级别API做一个安全的插入。
我在一个干净的Grails项目中复制了这个问题,如下所示:
我的问题是:这是GMongo包装器中的一个bug,还是应该如何使用低级API进行安全写入?
发布于 2011-07-28 19:03:30
这是由于GMongo库以及它如何修补DBCollection对象以处理将Map对象传递给insert方法并转换它们的方式。它假设insert方法的所有参数都是Map对象,然后尝试从Map.Entry获取value属性。
查看来自Patcher.groovy库的GMongo源,您将看到尝试执行此操作的函数_convert()。它看起来像一个带有参数类型检查(查看它是否是WriteConcern,或者在传递给_converAllCharSeqToString之前检查它是否实际上是一个Map )的Github项目的分支。
编辑:
为了进行适当的代码更改,我在Github上创建了一个拉请求,但是与Groovy一样,修补类也会有所帮助。您可以在您的WriteConcern中“修补”BootStrap.groovy类,使其具有一个getValue方法,这将允许您将参数传递到:
def init = { servletContext ->
com.mongodb.WriteConcern.metaClass.getValue = { null }
}https://stackoverflow.com/questions/6855674
复制相似问题