首页 > 解决方案 > Sequelize & Apollo 服务器:将 findAll "sequelize.literal" 字段映射到 Apollo 模式字段

问题描述

我有一个像这样的阿波罗模式:

  type Batch {
    Batch: String,
    ItemCode: String,
    PV: String,
    ExpirationDate: DateTime,
    Freezed: Boolean,
    Item:Item,
    Quantity: Float, 
    Fefo: Boolean
  }

以及像这样的续集查询:

await models.Batch.findAll({
          attributes:  ['ItemCode','Lotto','ExpirationDate','Freezed', [Sequelize.literal(`CASE WHEN "Batch" ='${Batch}' THEN true ELSE false END`), "Fefo"] ],
          where: whereClause,      
          include: [models.Item],
          order: [
            // Will escape title and validate DESC against a list of valid direction parameters
            ['ExpirationDate'] 
          ]
          // attributes: models.mapAttribute(models.Batches, info)
        })  

返回一个对象数组Batch

所有运行都没有问题,graphql 查询运行良好:

{
    getFefoBatches (ItemCode:"200200201",Batch:"20201118B")
    {
        Batch, ExpirationDate, Fefo, Item { ItemCode ItemName }
    }
}

但是“Fefo”字段没有使用“sequelize.literal”值进行评估。它始终为空。

也许我不知道正确的语法,但我尝试了所有可能的方法,并且我搜索了解决方案但没有成功。

如何在 sequelize 字段和 Apollo 服务器模式之间进行正确的映射?

提前致谢。

标签: node.jsgraphqlsequelize.jsapollo-server

解决方案


好的,我发现问题不在于 sequelize 查询或 Apollo gql 架构,而是与模型有关。

我在模型上添加了一个与我的查询/模式字段同名的虚拟字段,一切正常。


推荐阅读