Express-Cassandra中使用uuid包生成的UUID验证失败求助
问题描述
Cassandra模型中定义字段如下:
user: { type:"uuid", rule:{ required:true, } },
尝试保存数据时收到错误:
apollo.model.validator.invalidvalue: Invalid Value: "**uuid generated here***" for Field: sender (Type: uuid)
使用uuid包生成UUID,同时试过硬编码UUID,均出现上述错误。
解决思路与方案
1. 检查字段名一致性
注意到模型定义的字段是user,但错误提示的是sender字段,先确认保存数据时传入的字段名是否和模型定义匹配——如果你的数据里传的是sender而非user,那模型的校验会针对sender字段(如果模型里也定义了该字段但配置有误),或者直接是字段名不匹配导致的校验失败。
2. 确保UUID是Cassandra认可的类型
Cassandra的uuid类型要求传入的是原生UUID对象,而非字符串格式的UUID。如果你用的是uuid包生成的字符串UUID(比如uuid.v4()返回的是字符串),需要将其转换为Cassandra驱动支持的UUID对象:
- 若使用
cassandra-driver包,可调用内置类型转换方法:
const { types } = require('cassandra-driver'); // 假设生成的字符串UUID是uuidStr const validUuid = types.UUID.fromString(uuidStr); // 保存时传入validUuid而非字符串
- 如果你用的是Apollo相关的Cassandra ORM,同样需要确保传入的是对应框架认可的UUID类型,而非纯字符串。
3. 校验硬编码UUID的格式
如果是硬编码UUID,确保格式完全符合标准UUID格式(例如123e4567-e89b-12d3-a456-426614174000),没有多余符号或格式错误。
内容的提问来源于stack exchange,提问作者Diganta Kr Banik
相关产品推荐
相关产品推荐

