Rank 2: Process
How can use json type for attribute in collections?
Votes
1
Replies
7
Participants
Unknown
Messages
8
Rank 2: Process
How can use json type for attribute in collections?
you want to store json? then you can choose string and add maximum length. that is how I store json.
Rank 2: Process
But when i want to add query to that stringfied json i need to get all data and then parse, but i want to get data from db with conditions not all data
as far as I know, you cannot query on json. appwrite uses SQL for storing collections. it is not pureplay noSQL db like mongo
Rank 2: Process
So what i can do to implement this?
I am getting around this by creating an String attribute as an array with max length, before storing the data I use JSON.stringfy and convert the string to an array of strings with the max length. When I retrieve the data join the array of strings and parse it back to JSON. is a bit of a process 😅
if you're using js/ts here's the code for getting the array of strings to save it in appwrite db
export const splitJsonString = ( jsonString: string, maxLength: number): string[] => { if (jsonString.length <= maxLength) { return [jsonString]; }
const chunks: string[] = []; let currentChunk = "";
for (const char of jsonString) { // Check if adding the current character exceeds the maxLength if (currentChunk.length + char.length <= maxLength) { currentChunk += char; } else { // If adding the current character exceeds the maxLength, start a new chunk chunks.push(currentChunk); currentChunk = char; } }
// Push the last chunk if it is not empty if (currentChunk.length > 0) { chunks.push(currentChunk); }
return chunks;};What exactly are you trying to store?