can we extend Document to infer types of attributes while retrieving documents on Typescript? What's the preferred way? Because DocumentList<Document> doesn't include attributes and currently I have to go with any as workaround.
what's the usecase?
iirc, the main structure would be in Document.data, DocumentList is just a type that holds a total: number & the list of documents. If you mean infer the return type from the sdk return types, I don't think so.
you can always play around with extended types though.
you could do some sort of documents.map((doc) => ...).
From what I understand, instead of doing document.data["Attribute"] Doing document.data.attribute so it gets completed automatically
i see, but the type won't exist due to data's dynamic nature. but iirc, there was a library by a community member that would pre-fetch the types. should be in #🛠│tools ig.
Maybe I didn't explained it well enough. Could be something totally related to ts only. Let me give bit more context. Give me a while
Following is a function I'm using to retrieve some aatribute from the documents.
const statsData = await databases.listDocuments(
APPWRITE_DB_ID,
APPWRITE_FILES_COUNTS_COL_ID,
[Query.select(["year", "month", "count"])]
);
The return type right now is statsData is Models.DocumentList<Models.Document>. The Models.Document type has metadata related values mostly. like $id, $createdAt
Can I extend the type of Document such that along with the metadata, I can also get type of the attributes I've queried with Query.select()?
Along with the existing Document type, I also want to infer following when I access statsData
interface Stat {
year: number,
month: number,
count: number
}
@Darshan Pandya @D5
Recommended threads
- Attribute not found in schema on REST AP...
I'm querying a appwrite collection via the REST API on appwrite cloud 1.9.5 (no SDK) via a cloudflare worker and keep getting: ``` {"message":"Invalid query: A...
- Not allowed permission to upsert a prese...
```js const presenceID = ID.unique(); setPID(presenceID); const presence = await presences.upsert({ presenceId: presenceID, status: "online"...
- Finding job
Hi. I am a full-stack developer with experience in developing scalable and user-friendly web applications. I handle both front-end and back-end development, im...