javascript - TypeError ที่จับไม่ได้: ไม่สามารถเพิ่มคุณสมบัติ 12 ได้ วัตถุไม่สามารถขยายได้
ฉันดูเหมือนจะไม่สามารถเข้าใจข้อผิดพลาดที่ฉันได้รับในแอปพลิเคชันไคลเอนต์ของฉันได้ ฉันกำลังสมัครสมาชิกกับการสมัครสมาชิก graphql และฉันสามารถดึงการอัปเดตได้ แต่ฉันไม่สามารถส่งการเปลี่ยนแปลงไปยังอาร์เรย์ typescript ที่เรียกว่า "models:ModelClass[]" ซึ่งถูกผูกกับมุมมองได้
มีอะไรที่ฉันพลาดหรือต้องทำผิดหรือไม่?
models.component.ts
this.apollo.subscribe({
query: gql`
subscription {
newModelCreated{
_id
name
type
train_status
deploy_status
data_path
description
created_at
updated_at
}
}
`
}).subscribe((data) => {
console.log("CREATED: " + JSON.stringify(data.newModelCreated));
console.log(data.newModelCreated);
var temp:ModelClass = data.newModelCreated;
this.models.push(temp);
});
model-class.ts
export interface ModelClass {
_id: string;
name: string;
type: string;
parameters: {
alpha: number;
};
train_status: string;
deploy_status: string;
test_accuracy: string;
created_at: number;
updated_at: number;
}
คำตอบ #1
ผมคิดว่า this.models คืออาเรย์ที่ถูกส่งกลับมาจาก Apollo และคุณต้องการเพิ่มวัตถุที่สร้างใหม่ไปยังอาเรย์เริ่มต้นของคุณใช่ไหม? ถ้าใช่ Apollo จะส่งกลับเป็นวัตถุที่ไม่สามารถเปลี่ยนแปลงได้!
คุณต้องทำการโคลนอาเรย์ที่ส่งกลับมาเริ่มแรก บางอย่างเหมือนในฟังก์ชัน subscribe:
this.apollo
.watchQuery({query: INITIAL_GQL_REQUEST})
.subscribe((data) => {
this.models = data.models.map((model) => {
return {
id: model.id,
name: model.name,
another: model.another
}
})
};
});
จากนั้นคำขอสมัครของคุณจะสามารถเพิ่มโมเดลที่สร้างขึ้นไปยังอาเรย์จาวาสคริปต์ธรรมดานี้ได้
ป.ล.: ไม่แน่ใจ แต่ฉันคิดว่า Apollo จะส่งคืนวัตถุที่ไม่สามารถเปลี่ยนแปลงได้เพราะพวกมันถูกเก็บในสโตร์ และขึ้นอยู่กับนโยบายการดึงข้อมูลของคุณ มันอาจพลาดการเข้าใช้สโตร์หากคุณสามารถแก้ไขพวกมันได้
หวังว่าจะช่วยได้นะ
