Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support multiple Search returnFields #986

Closed
blowmage opened this issue Dec 2, 2015 · 3 comments
Closed

Support multiple Search returnFields #986

blowmage opened this issue Dec 2, 2015 · 3 comments
Assignees

Comments

@blowmage
Copy link
Contributor

blowmage commented Dec 2, 2015

I've been troubleshooting some gcloud-ruby issues connecting to the Cloud Search API. I've been looking at gcloud-node's implementation, and I can't get find a way to specify multiple returnFields values.

Here is my setup:

$ nodejs
> var gcloud = require('gcloud')(...);
undefined
> var search = gcloud.search();
undefined
> var index = search.index('test');
undefined
> var printSearchResults = function(err, documents) {
...   if (err) {
.....     console.log('there was an error');
.....     console.log(err);
.....   } else {
.....     console.log('the search results were returned:');
.....     console.log(documents);
.....   }
... }
undefined

I can perform a simple search without specifying any returnFields values:

> index.search('ruby', printSearchResults);
undefined
> the search results were returned:
[ { metadata: {},
    baseUrl: '/documents',
    parent: 
     { metadata: {},
       baseUrl: '/indexes',
       parent: [Object],
       id: 'test',
       createMethod: undefined,
       create: undefined,
       delete: undefined,
       exists: undefined,
       get: undefined,
       getMetadata: undefined,
       setMetadata: undefined },
    id: 'gcloud-ruby',
    createMethod: undefined,
    setMetadata: undefined,
    fields: {} } ]

undefined

And I can specify a single returnFields value:

> index.search({query: 'ruby', returnFields: '*'}, printSearchResults);
undefined
> the search results were returned:
[ { metadata: {},
    baseUrl: '/documents',
    parent: 
     { metadata: {},
       baseUrl: '/indexes',
       parent: [Object],
       id: 'test',
       createMethod: undefined,
       create: undefined,
       delete: undefined,
       exists: undefined,
       get: undefined,
       getMetadata: undefined,
       setMetadata: undefined },
    id: 'gcloud-ruby',
    createMethod: undefined,
    setMetadata: undefined,
    fields: { summary: [Object], title: [Object], description: [Object] } } ]

undefined

The trouble I run into is specifying multiple values:

> index.search({query: 'ruby', returnFields: ['title', 'summary', 'description']}, printSearchResults);
undefined
> there was an error
{ errors: undefined,
  code: 400,
  message: 'Invalid JSON payload received. Unknown name "returnFields[1]": Cannot bind query parameter. Field \'returnFields[1]\' could not be found in request message.\nInvalid JSON payload received. Unknown name "returnFields[2]": Cannot bind query parameter. Field \'returnFields[2]\' could not be found in request message.\nInvalid JSON payload received. Unknown name "returnFields[0]": Cannot bind query parameter. Field \'returnFields[0]\' could not be found in request message.',
  response: undefined }

undefined
> 
@blowmage blowmage added the search label Dec 2, 2015
@stephenplusplus
Copy link
Contributor

Thanks for the report! I'll get on this 👍

@stephenplusplus stephenplusplus self-assigned this Dec 2, 2015
@callmehiphop
Copy link
Contributor

I looked into this a little bit, request uses a module called qs internally, this is a code sample from their docs

Qs.stringify({ a: ['b', 'c', 'd'] });
// 'a[0]=b&a[1]=c&a[2]=d' 

This explains the problem we're seeing and it looks like we can get around it by passing request a qsStringifyOptions object with indices set to false. Do we know if that's the standard way the upstream API deals with query strings? Just curious about if it would be safe to turn of indices globally or if we'll need to handle this on a case by case basis.

@stephenplusplus
Copy link
Contributor

That's interesting. From the request docs, we can also use useQuerystring: true to use the default querystring module which loses the indices.

But in this case, it looks like the API wants a string and not a list of strings:

... ... ...
returnFields string List of fields to return in SearchResult objects. It can be fields from Document, the built-in fields _rank and _score, and fields defined in fieldExpressions. Use "*" to return all fields from Document.

Looks like there is either a discrepancy in the type or an unknown delimter... subscribed to googleapis/google-cloud-ruby#450 so we can see what needs to be done here when that's resolved.

@stephenplusplus stephenplusplus added the status: blocked Resolving the issue is dependent on other work. label Dec 7, 2015
@stephenplusplus stephenplusplus removed the status: blocked Resolving the issue is dependent on other work. label Dec 9, 2015
sofisl pushed a commit that referenced this issue Jan 17, 2023
[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [sinon](https://sinonjs.org/) ([source](https://github.com/sinonjs/sinon)) | [`^12.0.0` -> `^13.0.0`](https://renovatebot.com/diffs/npm/sinon/12.0.1/13.0.0) | [![age](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/compatibility-slim/12.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/confidence-slim/12.0.1)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>sinonjs/sinon</summary>

### [`v13.0.0`](https://github.com/sinonjs/sinon/blob/HEAD/CHANGES.md#&#8203;1300)

[Compare Source](https://github.com/sinonjs/sinon/compare/v12.0.1...v13.0.0)

-   [`cf3d6c0c`](https://github.com/sinonjs/sinon/commit/cf3d6c0cd9689c0ee673b3daa8bf9abd70304392)
    Upgrade packages ([#&#8203;2431](https://github.com/sinonjs/sinon/issues/2431)) (Carl-Erik Kopseng)
    > -   Update all @&#8203;sinonjs/ packages
    >
    > -   Upgrade to fake-timers 9
    >
    > -   chore: ensure always using latest LTS release
-   [`41710467`](https://github.com/sinonjs/sinon/commit/417104670d575e96a1b645ea40ce763afa76fb1b)
    Adjust deploy scripts to archive old releases in a separate branch, move existing releases out of master ([#&#8203;2426](https://github.com/sinonjs/sinon/issues/2426)) (Joel Bradshaw)
    > Co-authored-by: Carl-Erik Kopseng <carlerik@gmail.com>
-   [`c80a7266`](https://github.com/sinonjs/sinon/commit/c80a72660e89d88b08275eff1028ecb9e26fd8e9)
    Bump node-fetch from 2.6.1 to 2.6.7 ([#&#8203;2430](https://github.com/sinonjs/sinon/issues/2430)) (dependabot\[bot])
    > Co-authored-by: dependabot\[bot] <49699333+dependabot\[bot][@&#8203;users](https://github.com/users).noreply.git.luolix.top>
-   [`a00f14a9`](https://github.com/sinonjs/sinon/commit/a00f14a97dbe8c65afa89674e16ad73fc7d2fdc0)
    Add explicit export for `./*` ([#&#8203;2413](https://github.com/sinonjs/sinon/issues/2413)) (なつき)
-   [`b82ca7ad`](https://github.com/sinonjs/sinon/commit/b82ca7ad9b1add59007771f65a18ee34415de8ca)
    Bump cached-path-relative from 1.0.2 to 1.1.0 ([#&#8203;2428](https://github.com/sinonjs/sinon/issues/2428)) (dependabot\[bot])
-   [`a9ea1427`](https://github.com/sinonjs/sinon/commit/a9ea142716c094ef3c432ecc4089f8207b8dd8b6)
    Add documentation for assert.calledOnceWithMatch ([#&#8203;2424](https://github.com/sinonjs/sinon/issues/2424)) (Mathias Schreck)
-   [`1d5ab86b`](https://github.com/sinonjs/sinon/commit/1d5ab86ba60e50dd69593ffed2bffd4b8faa0d38)
    Be more general in stripping off stack frames to fix Firefox tests ([#&#8203;2425](https://github.com/sinonjs/sinon/issues/2425)) (Joel Bradshaw)
-   [`56b06129`](https://github.com/sinonjs/sinon/commit/56b06129e223eae690265c37b1113067e2b31bdc)
    Check call count type ([#&#8203;2410](https://github.com/sinonjs/sinon/issues/2410)) (Joel Bradshaw)
-   [`7863e2df`](https://github.com/sinonjs/sinon/commit/7863e2dfdbda79e0a32e42af09e6539fc2f2b80f)
    Fix [#&#8203;2414](https://github.com/sinonjs/sinon/issues/2414): make Sinon available on homepage (Carl-Erik Kopseng)
-   [`fabaabdd`](https://github.com/sinonjs/sinon/commit/fabaabdda82f39a7f5b75b55bd56cf77b1cd4a8f)
    Bump nokogiri from 1.11.4 to 1.13.1 ([#&#8203;2423](https://github.com/sinonjs/sinon/issues/2423)) (dependabot\[bot])
-   [`dbc0fbd2`](https://github.com/sinonjs/sinon/commit/dbc0fbd263c8419fa47f9c3b20cf47890a242d21)
    Bump shelljs from 0.8.4 to 0.8.5 ([#&#8203;2422](https://github.com/sinonjs/sinon/issues/2422)) (dependabot\[bot])
-   [`fb8b3d72`](https://github.com/sinonjs/sinon/commit/fb8b3d72a85dc8fb0547f859baf3f03a22a039f7)
    Run Prettier (Carl-Erik Kopseng)
-   [`12a45939`](https://github.com/sinonjs/sinon/commit/12a45939e9b047b6d3663fe55f2eb383ec63c4e1)
    Fix 2377: Throw error when trying to stub non-configurable or non-writable properties ([#&#8203;2417](https://github.com/sinonjs/sinon/issues/2417)) (Stuart Dotson)
    > Fixes issue [#&#8203;2377](https://github.com/sinonjs/sinon/issues/2377) by throwing an error when trying to stub non-configurable or non-writable properties

*Released by [Carl-Erik Kopseng](https://github.com/fatso83) on 2022-01-28.*

</details>

---

### Configuration

📅 **Schedule**: "after 9am and before 3pm" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-vision).
sofisl pushed a commit that referenced this issue Jan 24, 2023
* chore(main): release 5.2.0

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
sofisl pushed a commit that referenced this issue Jan 25, 2023
* chore(main): release 5.2.0

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants