如何在Mongoose Schema中添加带特殊字符的整数字段避免被识别为函数
Mongoose Schema含特殊字符字段定义解决方案
错误原因
- JavaScript对象语法要求:包含空格、括号等特殊字符的键名必须用单引号/双引号包裹,否则你写的
Area (square kilometres)会被JS引擎识别为Area函数调用,直接抛出语法错误。 - Mongoose类型规则:原生不存在
Integer字段类型,整数数值统一使用Number类型定义即可,会自动适配MongoDB的整数存储。
修正后代码
import mongoose from 'mongoose'; const { Schema } = mongoose; export const albainiaStatsSchema = new Schema({ Country: String, Year: String, // 特殊字符键名加引号,类型使用Number "Area (square kilometres)": Number, // 同规则补充数据集里的其他字段 "Total population": Number })
对接GraphQL的额外优化建议
因为GraphQL规范不允许字段名包含空格、括号等特殊字符,如果你不想在GraphQL查询中写带引号的复杂字段名,可以在Mongoose Schema中配置别名映射:
"Area (square kilometres)": { type: Number, alias: "areaSqKm" // 代码和GraphQL中可以直接用areaSqKm调用 }, "Total population": { type: Number, alias: "totalPopulation" }
配置别名后数据入库依然会匹配你测试数据集的原字段名,不会出现字段映射错误。
内容的提问来源于stack exchange,提问作者JonathanMartin
相关产品推荐
相关产品推荐

