转换为数值失败 - GraphQL

Posted

技术标签:

【中文标题】转换为数值失败 - GraphQL【英文标题】:Cast to number failed for value - GraphQL 【发布时间】:2019-09-24 17:36:14 【问题描述】:

我是 graphQL 的新手。我正在尝试使用 graphiql,我正在尝试执行 where 我想检索年龄大于 30 岁的作者。

resolver.js

Query: 

        authorGratherThan: (root,  age ) => 
            return authorModel.where(
                age: 
                    _gte: 30
                
            );
        

    ,

图形工具


  authorGratherThan(age:30) 
    name,
    age,
  

架构模型 author.js

import mongoose from 'mongoose';
import uuid from 'node-uuid';
const schema = mongoose.Schema;

const authorsSchema = new schema(
    id:  type: String, default: uuid.v1 ,
    name: String,
    age: Number,
    books: [ String ]
);

const model = mongoose.model('author', authorsSchema);
export default model;

收到此错误:

"message": "Cast to number failed for value \" _gte: 30 \" at path 模型\"作者\""的\"年龄\",

【问题讨论】:

您的数据库类型是什么? MongoDB。我已经用模式模型更新了我的问题 只需使用.find 而不是.where - mongoosejs.com/docs/api.html#model_Model.find ,您的代码就会来到authorModel.find(age: $gte: 30 ) @hoangdv 随时发布答案,以便您获得积分!非常感谢 @hoangdv 仅供参考:使用 where 也可以,但错误是我使用的是 _gte 而不是 $gte 【参考方案1】:

只需使用 .find 而不是 .where - doc ,您的代码就会出现

authorModel.find(age:  $gte: 30 )

或者我们可以改为写,

authorModel.where('age').gte(30)

【讨论】:

以上是关于转换为数值失败 - GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

分分钟将 REST 转换为 GraphQL

当毫秒具有小数值(000 以外的值)时,Swift 日期字符串到日期失败

python 数值转BCD,如何拼接二进制字符串

java - 数值转换

SQL SERVER字符串转换问题

数值怎么转换成数字