Deleted the stored data
You can either delete all the user's metadata, or ceetain fields from them:
1. Deleting specific fields from the metadata object
This can be done by calling the update metadata function and setting the field you want to remove to be null
. For example, if you have the following metadata object for a user:
{
"preferences": { "theme": "dark" },
"notifications": { "email": true },
"todos": ["use-text-notifs"]
}
And you want to remove the "notifications"
field, you can update the metadata object with the following JSON:
{
"notifications": null
}
This would result in the final metadata object:
{
"preferences": { "theme": "dark" },
"todos": ["use-text-notifs"]
}
Important
You can only remove the root level fields in the metadata object in this way. From the above example, if you set preferences.theme: null
, then it will not remove the "theme"
field, but instead set it to a JSON null value.
In code, it would look like:
import express from "express";
import { verifySession } from "supertokens-node/recipe/session/framework/express";
import UserMetadata from "supertokens-node/recipe/usermetadata";
let app = express();
app.post("/updateinfo", verifySession(), async (req, res) => {
const session = req.session;
const userId = session.getUserId();
await UserMetadata.updateUserMetadata(userId, { notifications: null });
res.json({ message: "successfully updated user metadata" });
});
2. Deleting the entire metadata object
Using this function will delete all the fields in the user metadata object for that user.
import express from "express";
import { verifySession } from "supertokens-node/recipe/session/framework/express";
import UserMetadata from "supertokens-node/recipe/usermetadata";
let app = express();
app.post("/updateinfo", verifySession(), async (req, res) => {
const session = req.session;
const userId = session!.getUserId();
await UserMetadata.clearUserMetadata(userId);
res.json({ success: true });
});