whataboutno13Original post
Rank 2: Process
Hi fellow appwrite community,
I am getting an Invalid queries error when using the listDocuments function in a node.js function.
The function I use has the following code:
const sdk = require("node-appwrite");
const { databaseId, eventsCollectionId } = require("./constants");
module.exports = async function (req, res) {
const client = new sdk.Client();
const database = new sdk.Databases(client);
if (
!req.variables['APPWRITE_FUNCTION_ENDPOINT'] ||
!req.variables['APPWRITE_FUNCTION_PROJECT_ID'] ||
!req.variables['APPWRITE_FUNCTION_API_KEY']
) {
console.info("Environment variables are not set. Function cannot use Appwrite SDK. Exiting.");
res.send("Environment variables are not set.", 401);
return;
} else {
client
.setEndpoint(req.variables['APPWRITE_FUNCTION_ENDPOINT'])
.setProject(req.variables['APPWRITE_FUNCTION_PROJECT_ID'])
.setKey(req.variables['APPWRITE_FUNCTION_API_KEY'])
.setSelfSigned(true);
}
if (!req.variables['APPWRITE_FUNCTION_USER_ID']) {
console.info("UserId is not set.");
res.send("UserId is not set.", 401);
return;
}
let userId = req.variables['APPWRITE_FUNCTION_USER_ID']
await database.listDocuments(databaseId, eventsCollectionId, sdk.Query.equal("ownerId", userId))
.then((value) => console.info(value.documents.pop()));
};
This is the error that gets thrown in Appwrite:
Error: Invalid queries: Value must a valid array and Value must be a valid string and no longer than 4096 chars
at Client.call (/usr/code-start/node_modules/node-appwrite/lib/client.js:171:31)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Databases.listDocuments (/usr/code-start/node_modules/node-appwrite/lib/services/databases.js:1002:16)
at async module.exports (/usr/code-start/src/index.js:56:3)
at async /usr/local/src/server.js:68:13
Am I using sdk.Query.equal wrong or what could be the issue here?
Summary
The user was facing an "Invalid queries" error when using the `listDocuments` function in a node.js app. They figured out that the issue was with their usage of `sdk.Query.equal` and that they needed to add square brackets around the `Query` call.
Solution: Instead of `sdk.Query.equal("ownerId", userId)`, use `[sdk.Query.equal("ownerId", userId)]` in the `listDocuments` function.