如何 Sequelize "where" 访问 table 和列

how to Sequelize "where" accessing table and column

我正在尝试移植一个使用过 sequelize 3.30.4 的应用程序并且我正在更新到 6.13,我假设有些事情已经改变,因为我不能在 where 子句中使用字符串文字,等等调试器告诉我。

就是说,我已经进行了一些谷歌搜索并找到了一些确定有意义的基本示例,但我不完全确定如何将此字符串转换为 findAndCountAll 可接受的格式。

我曾尝试过这样的事情,认为它至少可以为我指明正确的方向,但事实并非如此。


  let attributes = ['id', 'name', 'locationId'];
  let where = undefined;
  let order = [['name', 'ASC']];

    where = {
      classroom: {
        locationId: request.query.locationId
      }
    }

这是曾经有效但不再有效的线路。

where = `"classroom"."locationId" = ${request.query.locationId}`;
  const classrooms = await model.classroom.findAndCountAll(_.assign({},
    requestHelper.computePaginationObject(request.query.limit, request.query.page), {
    attributes,
    where: where ? [where] : undefined,
    order
  }));

我该如何将其移植为正确的格式?

尝试这样的事情:

let where = {}
if (<some condition>) {
  where = {
    locationId: request.query.locationId
  }
}
const classrooms = await model.classroom.findAndCountAll(_.assign({},
    requestHelper.computePaginationObject(request.query.limit, request.query.page), {
    attributes,
    where: where,
    order
  }));

即使 ANATOLY 的第一条评论效果很好,你也可以尝试一下:

const where = <some condition> ? {locationId: request.query.locationId} :{};

const classrooms = await model.classroom.findAndCountAll(_.assign({},
        requestHelper.computePaginationObject(request.query.limit, request.query.page), {
        attributes,
        where,
        order
      }));