gpt4 book ai didi

ajax - 从各种来源返回相同的JSON记录列表

转载 作者:行者123 更新时间:2023-12-02 15:38:40 25 4
gpt4 key购买 nike

我正在使用Grails 1.3.7。假设我有域对象Foo和Bar。 Foo和Bar都有Noodle实例的列表。在NoodleController,FooController和BarController中,我有一个fetchNoodles操作,它返回记录的JSON列表,像这样

NoodleController

def fetchNoodles = {
List data = []
for(noodle in Noodle.list())
data.add([noodle.id, noodle.name, noodle.stuff]

render data as JSON
}

FooController
def fetchNoodles = {
List data = []

foo = Foo.get(params.id)
if (foo) {
for(noodle in foo.noodles())
data.add([noodle.id, noodle.name, noodle.stuff]
}

render data as JSON
}

条形 Controller
def fetchNoodles = {
List data = []

bar = Bar.get(params.id)
if (bar) {
for(noodle in bar.noodles())
data.add([noodle.id, noodle.name, noodle.stuff]
}

render data as JSON
}

问题
  • 如何避免重复相同代码3次?
  • 如何在不重复自己的情况下向那些列表获取操作添加过滤?
  • 最佳答案

    只需将其移动到NoodleService即可。然后,在BarController中,像

    def noodleService

    def fetchNoodles = {
    List data = noodleService.getNoodles(Bar.get(params.id)?.noodles)
    render data as JSON
    }

    要么
    noodleService.getNoodles(Bar.get(params.id)?.noodles, { it.name =~ /A.+/ })) 

    如果我们正在谈论检索 noodles集合后的过滤。如果需要在数据库级别过滤 noodles,则需要以其他方式访问它们,例如:
    noodleService.getNoodles([barId: params.id], params.subMap(
    ['order', 'sort', 'max', 'offset', 'whatever-filter-field-names-here']))

    并在 NoodleService.getNoodles(Map criteriaFields, Map filterFields)中使用条件查询 noodles

    关于ajax - 从各种来源返回相同的JSON记录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5788106/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com