Typegoose 未在 Nest.js 应用程序中正确保存数组子文档
Typegoose is not saving array subdocuments properly in Nest.js app
我正在尝试在我的 Task
模型中保存一组 TaskOutcome
子文档,遵循 typegoose documentation:
import { prop } from '@typegoose/typegoose';
class TaskOutcome {
@prop({ required: true }) public inputId: string;
@prop() public label?: string;
@prop() public value?: string;
}
export class Task {
@prop() public _id: string;
...
@prop({ _id: false, type: () => [TaskOutcome] })
public outcomes: TaskOutcome[];
}
@Injectable()
export class TaskService {
constructor(
@InjectModel(Task) private readonly model: ReturnModelType<typeof Task>,
) {}
public async saveTask(data: TaskDTO) {
console.log(data.outcomes);
const options: QueryOptions = { upsert: true, new: true };
const result = await this.model.findByIdAndUpdate(data.id, data, options);
console.log(result.outcomes);
}
}
当我保存一个任务文档时,它的所有道具都按预期保存,除了 outcomes
数组子文档。相反,我得到的只是一组空对象。所以即使上面的第一个 console.log
向我显示了正确的输入数据,第二个 console.log
给了我 [{},{},{}]
(在检查数据库时确认)。
有什么明显的错误吗?
我正在使用 @nestjs/core@8.2.4
、@typegoose/typegoose@9.3.1
、nestjs-typegoose@7.1.38
和 mongoose@6.1.2
呜呜呜。不理我。上面的代码工作得很好。
相反,Nest.js ValidationPipe
似乎存在一个错误,它非常巧妙地破坏了我传入的 TaskDTO 数据 - 所以我的 outcomes
数组在控制台,但实际上是一个 数组数组 ,而不是 对象数组 .
所以 typegoose 正确地忽略了它。如果有人偶然发现这个问题,请检查您保存的数据是否确实是它应该的
我正在尝试在我的 Task
模型中保存一组 TaskOutcome
子文档,遵循 typegoose documentation:
import { prop } from '@typegoose/typegoose';
class TaskOutcome {
@prop({ required: true }) public inputId: string;
@prop() public label?: string;
@prop() public value?: string;
}
export class Task {
@prop() public _id: string;
...
@prop({ _id: false, type: () => [TaskOutcome] })
public outcomes: TaskOutcome[];
}
@Injectable()
export class TaskService {
constructor(
@InjectModel(Task) private readonly model: ReturnModelType<typeof Task>,
) {}
public async saveTask(data: TaskDTO) {
console.log(data.outcomes);
const options: QueryOptions = { upsert: true, new: true };
const result = await this.model.findByIdAndUpdate(data.id, data, options);
console.log(result.outcomes);
}
}
当我保存一个任务文档时,它的所有道具都按预期保存,除了 outcomes
数组子文档。相反,我得到的只是一组空对象。所以即使上面的第一个 console.log
向我显示了正确的输入数据,第二个 console.log
给了我 [{},{},{}]
(在检查数据库时确认)。
有什么明显的错误吗?
我正在使用 @nestjs/core@8.2.4
、@typegoose/typegoose@9.3.1
、nestjs-typegoose@7.1.38
和 mongoose@6.1.2
呜呜呜。不理我。上面的代码工作得很好。
相反,Nest.js ValidationPipe
似乎存在一个错误,它非常巧妙地破坏了我传入的 TaskDTO 数据 - 所以我的 outcomes
数组在控制台,但实际上是一个 数组数组 ,而不是 对象数组 .
所以 typegoose 正确地忽略了它。如果有人偶然发现这个问题,请检查您保存的数据是否确实是它应该的