Index on optional nested properties
Is there a reason that on the schema:
with indices
I can do
But the nested one gets a type error?
export const vGameState = v.object({
playerOne: v.optional(
v.object({ userId: v.id("users"), username: v.string() })
),
playerOneId: v.optional(v.id("users")),
playerTwo: v.optional(
v.object({ userId: v.id("users"), username: v.string() })
),
playerTwoId: v.optional(v.id("users")),
});export const vGameState = v.object({
playerOne: v.optional(
v.object({ userId: v.id("users"), username: v.string() })
),
playerOneId: v.optional(v.id("users")),
playerTwo: v.optional(
v.object({ userId: v.id("users"), username: v.string() })
),
playerTwoId: v.optional(v.id("users")),
});with indices
export default defineSchema({
games: defineTable(vGameState)
.index("by_player_one", ["playerOneId"])
.index("by_player_one_nested", ["playerOne.userId"])
.index("by_player_two", ["playerTwoId"])
.index("by_player_two_nested", ["playerTwo.userId"]),
});export default defineSchema({
games: defineTable(vGameState)
.index("by_player_one", ["playerOneId"])
.index("by_player_one_nested", ["playerOne.userId"])
.index("by_player_two", ["playerTwoId"])
.index("by_player_two_nested", ["playerTwo.userId"]),
});I can do
const games1 = await ctx.db
.query("games")
.withIndex("by_player_one", (q) => q.eq("playerOneId", userId))
.order("desc")
.collect(); const games1 = await ctx.db
.query("games")
.withIndex("by_player_one", (q) => q.eq("playerOneId", userId))
.order("desc")
.collect();But the nested one gets a type error?
const games1_nested = await ctx.db
.query("games")
.withIndex("by_player_one_nested", (q) =>
q.eq("playerOne.userId", userId)
)
.order("desc")
.collect(); const games1_nested = await ctx.db
.query("games")
.withIndex("by_player_one_nested", (q) =>
q.eq("playerOne.userId", userId)
)
.order("desc")
.collect();
