Noah
Noah2w ago

Request to support `args` parameter in Convex Migrations

With Convex migrations I can use table indexes to only run the migration on a subset. But I can't find a way to take in an argument for which subset to run it on. So every time I wanna change the customRange query I'm forced to push a change. Here's what I'd like to do:
export const validateRequiredField = migrations.define({
table: "myTable",
args: {
organizationId: v.string(),
},
customRange: (query, args) =>
query.withIndex("byorganizationid", (q) => q.eq("organizationId", args.organizationId)),
migrateOne: async (_ctx, doc) => {
console.log("Needs fixup: " + doc._id);
// Shorthand for patching
return { requiredField: "<unknown>" };
},
});
export const validateRequiredField = migrations.define({
table: "myTable",
args: {
organizationId: v.string(),
},
customRange: (query, args) =>
query.withIndex("byorganizationid", (q) => q.eq("organizationId", args.organizationId)),
migrateOne: async (_ctx, doc) => {
console.log("Needs fixup: " + doc._id);
// Shorthand for patching
return { requiredField: "<unknown>" };
},
});
But the args parameter is not supported at the moment.
2 Replies
Convex Bot
Convex Bot2w ago
Thanks for posting in <#1088161997662724167>. Reminder: If you have a Convex Pro account, use the Convex Dashboard to file support tickets. - Provide context: What are you trying to achieve, what is the end-user interaction, what are you seeing? (full error message, command output, etc.) - Use search.convex.dev to search Docs, Stack, and Discord all at once. - Additionally, you can post your questions in the Convex Community's <#1228095053885476985> channel to receive a response from AI. - Avoid tagging staff unless specifically instructed. Thank you!
erquhart
erquhart2w ago
Migrations on any platform don't generally accept arguments, they're meant to be run once and completed for a given database. This looks like it should just be a regular mutation that you call.

Did you find this page helpful?