javascript - 如果 value == null 则省略对象的键值
问题描述
使用下面显示的打字稿代码,它在 Firestore 数据库中创建新记录,如果值等于 null,是否可以省略(通过编写一行内联代码)键值对之一?
firestore.doc(`users/${user.uid}`).set({
email: user.email,
name: user.displayName,
phone: user.phoneNumber, // (user.phoneNumber ? phone: user.phoneNumber), ... ?
createdAt: firebase.firestore.FieldValue.serverTimestamp(),
});
解决方案
您可以使用带有三元表达式的对象破坏来做到这一点:
firestore.doc(`users/${user.uid}`).set({
email: user.email,
name: user.displayName,
...(user.phoneNumber ? { phone: user.phoneNumber } : undefined),
createdAt: firebase.firestore.FieldValue.serverTimestamp(),
});
它不是很优雅,但它可以在一行中完成它的工作:
const phone = null;
const obj = {
name: 'Alice',
age: 24,
...(phone ? { phone } : undefined),
};
console.log(obj);
编辑
根据ford04 提到的这个答案,它也可以像这样缩短:
...(user.phoneNumber && { phone: user.phoneNumber }),
再次编辑
但是最好正确检查它的类型,它可能会导致0
并且""
没有正确存储
...(![undefined, null].includes(user.phoneNumber) && { phone: user.phoneNumber })
推荐阅读
- php - PHP - 替换字符串之间的所有内容,包括内容
- sql - 如何解决数据类型 BLOB 无法转换为 varchar2
- intern - 在运行实际功能测试之前浏览器中会发生什么
- javascript - 添加/删除类的动画
- sql - sql server中的IF Else字符串检查条件
- c# - 哈希集
EqualityComparer 返回相等 if SetEquals: which GetHashCode? - javascript - 通过javascript和mysql获取图表
- php - 检查值是否在数组中并返回其余项目
- ios - SSL Pinning Alamofire 适用于任何证书
- python - 根据python中不同的二进制列创建分类列