typesense / typesense-js

JavaScript / TypeScript client for Typesense
https://typesense.org/docs/api
Apache License 2.0
400 stars 74 forks source link

Return value of collection `update` method seems mis-typed #150

Open aberkow opened 1 year ago

aberkow commented 1 year ago

Description

The return value of client().collection('name').update() seems to be mis-typed.

Steps to reproduce

data sent as JSON from postman to the proxy endpoint I'm working on

{
    "collectionName": "test",
    "updateFields": [
        {
            "name": "third_field",
            "type": "string"
        }
    ]
}
// snippet from my project

  const { 
    body: { 
      collectionName,
      updateFields
    } 
  } = req

typesenseClient.collections(collectionName)
    .update({ fields: updateFields })
      // the `update` response seems typed incorrectly relative to what's actually returned
      .then(update => {
        res.status(200).json({
          data: {
            collection: update,
            message: `Collection ${collectionName} updated`
          }
        })
      }).catch(err => {
        return serverError(res, 400, `Thee was an error updating the fields for ${collectionName}`, err)
      })

this is a screenshot of how typescript/vscode interprets the returned value of update

Screenshot of typescript definition of the update property

response object from the endpoint which appears to be of type CollectionFieldSchema or perhaps CollectionFieldUpdateSchema

{
    "data": {
        "collection": {
            "fields": [
                {
                    "facet": false,
                    "index": true,
                    "infix": false,
                    "locale": "",
                    "name": "fourth_field",
                    "optional": true,
                    "sort": false,
                    "type": "string*"
                }
            ]
        },
        "message": "Collection test updated"
    }
}

Expected Behavior

The return type of update should match what's actually returned

Actual Behavior

It doesn't 🙂

Metadata

Typesense Version: typesense-js 1.5.2 typesense server 0.23.1 (running in docker)