# Pointer创建方法修复 ## 错误信息 ``` Error: Property 'createWithoutData' does not exist on type 'new () => FmodeObject'. ``` ## 问题原因 在FmodeParse中,不能使用标准Parse SDK的`createWithoutData`方法来创建Pointer对象。 ## 解决方案 ### 错误的方法 ❌ ```typescript // 标准Parse SDK方法(在FmodeParse中不可用) Parse.Object.extend('Company').createWithoutData(companyId) ``` ### 正确的方法 ✅ ```typescript // FmodeParse中创建Pointer的正确方式 { __type: 'Pointer', className: 'Company', objectId: companyId } ``` ## 修复的代码 ### 1. getCompanyPointer() ```typescript // 修复前 private getCompanyPointer(): any { return Parse.Object.extend('Company').createWithoutData(this.companyId); } // 修复后 private getCompanyPointer(): any { return { __type: 'Pointer', className: 'Company', objectId: this.companyId }; } ``` ### 2. getProjectPointer() ```typescript // 修复前 private getProjectPointer(projectId: string): any { return Parse.Object.extend('Project').createWithoutData(projectId); } // 修复后 private getProjectPointer(projectId: string): any { return { __type: 'Pointer', className: 'Project', objectId: projectId }; } ``` ### 3. extractTargetObjects() ```typescript // 修复前 if (goodsId) { return Parse.Object.extend('ShopGoods').createWithoutData(goodsId); } // 修复后 if (goodsId) { return { __type: 'Pointer', className: 'ShopGoods', objectId: goodsId }; } ``` ## Pointer对象结构 FmodeParse中的Pointer对象使用以下JSON结构: ```typescript { __type: 'Pointer', // 固定值,表示这是一个指针 className: 'TableName', // 目标表名 objectId: 'objectId123' // 目标对象ID } ``` ## 参考示例 参考`case.service.ts`中的实现: ```typescript private getCompanyPointer() { return { __type: 'Pointer', className: 'Company', objectId: this.companyId }; } private getPointer(className: string, objectId: string) { return { __type: 'Pointer', className, objectId }; } ``` ## 验证 - ✅ 无TypeScript编译错误 - ✅ 无Linter警告 - ✅ Pointer对象可以正确保存到Parse数据库 - ✅ 与其他服务的实现方式一致 ## 修复的文件 - `yss-project/src/app/services/project-to-case.service.ts` ## 修复时间 2025-10-29