[SOLVED] Create OR query to receive documents where one or multiple attributes fits a search term
- 0
- Databases
- Web
- Self Hosted
Excellent. so that works, and I would want to use variables.
right...so if you're passing in variables, you can put Query.search("attr", "value")
for the variable value
It's confusing when you switch between different syntax.
I tried this query
queries: ["search(\"group_a\", \"hello\")","search(\"group_b\", \"hello\")"]
ERROR:
Search method requires fulltext index: group_a,group_b
Is there an $or operator?
no you can't search against multiple attributes like that. that will be treated like AND. you must execute multiple queries
How would I fix this in a single request?
with graphql you can make muliple api calls in 1
yes
query search($databaseId: String!, $collectionId: String!, $search1: String, $search2: String) {
search1: databasesListDocuments (
databaseId: $databaseId
collectionId: $collectionId
queries: [$search1]
) {
total
documents{
_id
_createdAt
_updatedAt
_permissions
data
}
}
search2: databasesListDocuments(
databaseId: $databaseId
collectionId: $collectionId
queries: [$search2]
) {
total
documents{
_id
_createdAt
_updatedAt
_permissions
data
}
}
}
Thanks. I can't figure out how to escape the usage of the search variable in the queries
Why do some Strings! contain a bang?
what exactly is your code?
That's graphQL syntax for non-nulable. see https://graphql.org/learn/schema/
search1: databasesListDocuments (
databaseId: $databaseId
collectionId: $collectionId
queries: ["search(\"group_a\", \"$search1\")"]
) {
total
documents{
_id
_createdAt
_updatedAt
_permissions
data
}
}
search2: databasesListDocuments(
databaseId: $databaseId
collectionId: $collectionId
queries: ["search(\"group_b\", \"$search1\")"]
) {
total
documents{
_id
_createdAt
_updatedAt
_permissions
data
}
}
}```
This is just your query. What's your actual code in your app?
Do you mean what am I trying to do?
no...i expect expect this to be in some javascript code if you're making a javacsript based app.
Currently I am playing around with this query in graphql explorer. I have a React based website where I am attempting to display search results with this graphql query
ok so you would use our SDK and write something like:
import { Client, Graphql, Query } from "appwrite";
const client = new Client()
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your Appwrite Endpoint
.setProject('[PROJECT_ID]'); // Your project ID
const graphql = new Graphql(client);
const query = graphql.query({
query: `query search($databaseId: String!, $collectionId: String!, $search1: String, $search2: String) {
search1: databasesListDocuments (
databaseId: $databaseId
collectionId: $collectionId
queries: [$search1]
) {
total
documents{
_id
_createdAt
_updatedAt
_permissions
data
}
}
search2: databasesListDocuments(
databaseId: $databaseId
collectionId: $collectionId
queries: [$search2]
) {
total
documents{
_id
_createdAt
_updatedAt
_permissions
data
}
}
}`,
variables: {
databaseId: '...',
collectionId: '...',
search1: Query.search('group_a', value),
search2: Query.search('group_b', value)
}
});
in the explorer it would have been something like
Is it too soon to say I love you?
Let me check this out..
Thank you
This worked thank you
[SOLVED] Create OR query to receive documents where one or multiple attributes fits a search term
Recommended threads
- How to Avoid Double Requests in function...
I'm currently using Appwrite's `functions.createExecution` in my project. I want to avoid double requests when multiple actions (like searching or pagination) a...
- Send Email Verification With REST
I am using REST to create a user on the server side after receiving form data from the client. After the account is successfully created i wanted to send the v...
- Use different email hosts for different ...
Hello, I have 2 projects and i want to be able to set up email templates in the projects. Both projects will have different email host configurations. I see ...