I'm trying to execute an update against a dynamoose model. Here's the docs on calling model.update

Model.update(key[, updateObj[, settings]],[ callback])

key can be a string representing the hashKey or an object containing the hashKey & rangeKey.

My schema has both a hash key (partition key) and range key (sort key) like this:

// create model
let model = dynamoose.model(
  "SampleStatus",
  {
    id: {
      type: String,
      hashKey: true,
    },
    date: {
      type: Date,
      rangeKey: true,
    },
    status: String,
  });

I've created an object like this (with a fixed timestamp for demoing)

let timestamp = 1606781220842; // Date.Now()
model.create({
  id: "1",
  date: new Date(timestamp),
  status: "pending",
});

I'd like to be able to update the status property by referencing just the id property like this:

model.update({id: "1"}, {status: "completed"})
// err: The provided key element does not match the schema

model.update("1", {status: "completed"})
// err: Argument of type 'string' is not assignable to parameter of type 'ObjectType'

But both result in the shown errors:

I can pass in the full composite key if I know the timestamp, so the following will work:

let timestamp = 1606781220842; // Date.Now()
model.update({ id: "1", date: timestamp }, { status: "completed" });

However, that requires me holding onto the timestamp and persisting alongside the id.

The ID field, in my case, should, by itself, be unique, so I don't need both to create a key, but wanted to add the date as a range key so it was sortable. Should I just update my schema so there's only a single hash key? I was thinking the docs that said a "`key can be a string representing the hashkey" would let me just pass in the ID, but that throws an error on compile (in typescript).

Any suggestions?