如何在不覆盖Null值的情况下将Firestore数据分配给Object?

时间:2018-04-16 17:35:22

标签: angular typescript firebase google-cloud-firestore

我有一个这样的课程:

export class Car{
    color='';
    topSpeed=0;
    wheels = 4;
}

在我的火炉店里,我有一份文件" car"值:

color:red
topSpeed:230

(所以没有'轮'键)

然后或多或少地重新分配和分配数据:

firebaseController.getCar().subscribe(car=>{
   this.car = car
}

一切都运转正常,但是轮子越来越严重了#34;未定义"如果键不存在或该键的值为空,我可以使它不覆盖变量吗?

1 个答案:

答案 0 :(得分:1)

使用点差运算符:

this.car = { ...(new Car()), ...car };

这样,this.car会收到默认属性(感谢new Car()),然后...car部分会添加自己的属性,但只会添加不同的属性undefined

但是,我建议您不要在这种情况下使用课程,因为this.car变量确实不是Car的实例。例如,如果Car采用honk()方法,则您无法执行this.car.honk()。也许在这种情况下使用Car的构造函数会更好。或者,如果这样的对象根本没有方法,请使用接口:

interface Car {
    color?: string;
    topSpeed?: number;
    wheels?: number
}

const defaultCar: Car = {
    color: '',
    topSpeed: 10,
    wheels: 4
};

// ....

this.car = {...defaultCar, ...car }

成为car Firebase返回的对象。