Vuefire Firebase 更新问题
Vuefire Firebase update issues
我在从 VueFire 更新 Firebase 时遇到了一些问题。我正在尝试使用以下方法,但如果我将任何字段留空(这应该在设置中经常发生),它就会对我大喊大叫。知道如果 .update 有一个空白字段为什么会生气吗?
Error: Uncaught Error: Firebase.update failed: First argument contains undefined in property 'businesses.somebusiness.video'
updatePost(post) {
postsRef.child(post['.key']).update({
name: post.name,
video: post.video,
story: post.story,
cover: post.cover,
card: post.card
})
},
有一次我把上面的重写成这样:
updatePost: function (post) {
const businesschildKey = post['.key'];
delete post['.key'];
/* Set the updated post value */
this.$firebaseRefs.posts.child(businesschildKey).set(post)
},
效果惊人,但删除键似乎会导致 Vue 中出现奇怪的排序问题。如果我能找到一种方法不让它在留空时出错,我宁愿坚持使用 top 方法。
根据,
When you pass an object to Firebase, the values of the properties can
be a value or null
(in which case the property will be removed). They
can not be undefined
, which is what you're passing in according to the
error.
您的错误消息表明 post.video
的值为 undefined
。您可以使用逻辑或来提供后备值,如下所示:
video: post.video || null,
这意味着只要 post.video
有一个 false-y 值,表达式的计算结果将是 null
。不过,这可能会捕获空字符串或数字 0。更准确地说,你应该使用
video: typeof post.video === 'undefined' ? null : post.video,
如果您需要对许多值进行此检查,您可以为其编写一个函数:
function nullIfUndefined(value) {
return typeof value === 'undefined' ? null : value;
}
那么你的表情就是
video: nullIfUndefined(post.video),
我在从 VueFire 更新 Firebase 时遇到了一些问题。我正在尝试使用以下方法,但如果我将任何字段留空(这应该在设置中经常发生),它就会对我大喊大叫。知道如果 .update 有一个空白字段为什么会生气吗?
Error: Uncaught Error: Firebase.update failed: First argument contains undefined in property 'businesses.somebusiness.video'
updatePost(post) {
postsRef.child(post['.key']).update({
name: post.name,
video: post.video,
story: post.story,
cover: post.cover,
card: post.card
})
},
有一次我把上面的重写成这样:
updatePost: function (post) {
const businesschildKey = post['.key'];
delete post['.key'];
/* Set the updated post value */
this.$firebaseRefs.posts.child(businesschildKey).set(post)
},
效果惊人,但删除键似乎会导致 Vue 中出现奇怪的排序问题。如果我能找到一种方法不让它在留空时出错,我宁愿坚持使用 top 方法。
根据
When you pass an object to Firebase, the values of the properties can be a value or
null
(in which case the property will be removed). They can not beundefined
, which is what you're passing in according to the error.
您的错误消息表明 post.video
的值为 undefined
。您可以使用逻辑或来提供后备值,如下所示:
video: post.video || null,
这意味着只要 post.video
有一个 false-y 值,表达式的计算结果将是 null
。不过,这可能会捕获空字符串或数字 0。更准确地说,你应该使用
video: typeof post.video === 'undefined' ? null : post.video,
如果您需要对许多值进行此检查,您可以为其编写一个函数:
function nullIfUndefined(value) {
return typeof value === 'undefined' ? null : value;
}
那么你的表情就是
video: nullIfUndefined(post.video),