如何在DenoDB中使用IN运算符进行数据查询?
解决DenoDB IN查询问题及替代ORM推荐
DenoDB的可行解决方案
如果常规的.where("departure", "in", ['Tokio','Berlin'])写法不生效,试试以下两种方法:
方法1:手动绑定参数的IN条件
直接在where条件中写IN语句并绑定参数,参数数量固定时:
await Flight.where("departure IN (?, ?)", "Tokio", "Berlin").all();
如果参数数量不确定,可动态生成占位符:
const cities = ["Tokio", "Berlin"]; const placeholders = cities.map(() => "?").join(","); await Flight.where(`departure IN (${placeholders})`, ...cities).all();
方法2:使用raw注入原生SQL片段
通过DenoDB提供的raw方法直接构造IN条件:
import { raw } from "https://deno.land/x/denodb/mod.ts"; const cities = ["Tokio", "Berlin"]; await Flight.where(raw`departure IN ('${cities.join("','")}')`).all();
适配Deno的替代ORM推荐
如果DenoDB确实不支持该功能,这些ORM可以满足IN查询需求:
- Prisma:完全支持Deno,查询语法直观,IN查询示例:
await prisma.flight.findMany({ where: { departure: { in: ["Tokio", "Berlin"] } } }); - Drizzle ORM:轻量高性能,原生支持Deno,IN查询需使用
inArray辅助函数:import { inArray } from "https://deno.land/x/drizzle-orm/mod.ts"; await db.select().from(flights).where(inArray(flights.departure, ["Tokio", "Berlin"])); - MikroORM:支持Deno环境,具备完整的查询API,IN查询写法:
await em.find(Flight, { departure: { $in: ["Tokio", "Berlin"] } });
内容的提问来源于stack exchange,提问作者hansTheFranz
相关产品推荐
相关产品推荐

