使用自定义JavaScript YQL开放数据表,“count”字段始终为“1”

时间:2012-08-24 14:35:18

标签: yql

YQL返回在其XML输出中检索的记录数:

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="2" yahoo:created="2012-08-24T14:02:32Z" yahoo:lang="en-US">
    <diagnostics>

但我一直在尝试使用我自己的自定义Open Data Tables,至少使用包含JavaScript的execute块来创建响应,并且无论我如何创建响应{{1当我使用表格进行查询时,} field总是设置为count

我也在文档中挖掘过,似乎无法找到解决此问题的任何内容。

这是设计的吗?这是一个错误吗?我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

这通常是由仅返回一个结果引起的,这不应该让人感到意外。根据我自己的经验,最常见的原因是忘记为itemPath指定合适的<select>

采用以下示例,了解response.object结构和itemPath如何组合以提供查询结果。

没有itemPath

<select itemPath="" produces="XML">
    <execute>
        <![CDATA[
        response.object = <letters>
            <letter>A</letter>
            <letter>B</letter>
            <letter>C</letter>
        </letters>
        ]]>
    </execute>
</select>

生成类似于以下内容的查询结果:

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="1" yahoo:created="…" yahoo:lang="en-US">
    <results>
        <letters>
            <letter>A</letter>
            <letter>B</letter>
            <letter>C</letter>
        </letters>
    </results>
</query>

使用itemPath="letters"

<select itemPath="letters" produces="XML">
…
</select>

生成与先前结果相同的查询结果。

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="1" yahoo:created="…" yahoo:lang="en-US">
    <results>
        <letters>
            <letter>A</letter>
            <letter>B</letter>
            <letter>C</letter>
        </letters>
    </results>
</query>

使用itemPath="letters.letter"

<select itemPath="letters.letter" produces="XML">
…
</select>

请注意,现在,路径现在指定了letter项的集合。这会产生类似于以下内容的查询结果:

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="3" yahoo:created="…" yahoo:lang="en-US">
    <results>
        <letter>A</letter>
        <letter>B</letter>
        <letter>C</letter>
    </results>
</query>