Javascript 类型';masterTaskInterface[]和#x27;不可分配给类型';[对象]';。目标需要1个元素,但源的元素可能较少
所以我有下面的模式Javascript 类型';masterTaskInterface[]和#x27;不可分配给类型';[对象]';。目标需要1个元素,但源的元素可能较少,javascript,node.js,mongodb,typescript,mongoose,Javascript,Node.js,Mongodb,Typescript,Mongoose,所以我有下面的模式 import mongoose from 'mongoose'; import { ProjectTaskInterface } from '~/interfaces/project-task.interface'; const taskSchema = new mongoose.Schema( { data: [mongoose.Schema.Types.Mixed], projectId: Number, }, {
import mongoose from 'mongoose';
import { ProjectTaskInterface } from '~/interfaces/project-task.interface';
const taskSchema = new mongoose.Schema(
{
data: [mongoose.Schema.Types.Mixed],
projectId: Number,
},
{
timestamps: true,
}
);
const taskModel = mongoose.model<
projectTaskInterface & mongoose.Document
>('Task', taskSchema);
export default taskModel;
现在我的问题开始于当我调用一个API时,我得到了一个响应数据
作为主任务界面[]
。
但是当运行下面的代码进行更新时,我得到了一个错误
const procoreProjectTask = await Task.findOne({
projectId: projectId,
updatedAt: { $gte: compareTime },
});
procoreProjectTask.data = result as masterTaskInterface[];
类型“masterTaskInterface[]”引发的错误不能分配给类型“[object]”。目标需要1个元素,但源元素可能更少。
因此,基本上我的理解是,我不能在mongoose中将typescript接口分配给混合的
模式类型
这个问题的解决办法是什么
const procoreProjectTask = await Task.findOne({
projectId: projectId,
updatedAt: { $gte: compareTime },
});
procoreProjectTask.data = result as masterTaskInterface[];