Lambda创建Group后调用Datastore.save报错‘Source is not a valid model’
解决「Source is not a valid model」错误问题
错误原因
API.graphql 返回的是 GraphQL 接口序列化后的普通 JSON 对象,而 Group.copyOf 方法要求传入的是 Datastore 生成的 Group 模型实例,普通 JSON 对象不符合方法参数要求,因此触发该错误。
解决方案
方案1:转换为模型实例后使用copyOf
先将API返回的JSON数据转换为Group实例,再调用copyOf方法:
// 提取API返回的原始数据 const rawGroup = result.data.createcommunity; // 构造Group模型实例 const groupInstance = new Group({ id: rawGroup.id, name: rawGroup.name, // 补充Group模型定义的其他所有字段,按需匹配 }); // 正常执行保存操作 await Datastore.save(Group.copyOf(groupInstance, m => { // 如需修改字段,在此处操作,例如: // m.description = "更新后的描述"; }));
方案2:直接构造实例保存(无需copyOf)
如果不需要修改返回的数据,直接构造Group实例后调用Datastore.save即可:
const rawGroup = result.data.createcommunity; await Datastore.save(new Group(rawGroup));
注意事项
- 确保API返回的
rawGroup包含Group模型定义的所有必填字段,且字段类型完全匹配(比如日期字段需为Date类型,而非字符串) - 若API返回字段与Datastore模型字段存在命名或结构差异,需手动映射对应字段
内容的提问来源于stack exchange,提问作者Ilijanovic
相关产品推荐
相关产品推荐

