javascript - 使用字符串对象的 Firebase 更新

标签 javascript firebase google-cloud-firestore

我正在制作一个简单的程序来登录任务,当有人更新字段时,我想仅使用更新的内容来更新文档,因此我制作了一个字符串生成器来创建参数:

function fireBaseUpdateStringMaker(update_field,update_val)
{
  return '\''+update_field+'\''+' : '+'\''+update_val+'\''+','
}

它创建一个字段,如下所示:'update_field':'update_val'

如果我遵循 Firebase 的文档,直接在我的代码中使用它效果很好 db.collections('this_collection').doc('this_doc').update({ 'update_field' : 'update_val' })

但是如果我将其作为变量传递给更新,那么它就不起作用

var updater =  'update_field' : 'update_val' ;
db.collections('this_collection').doc('this_doc').update({ updater })

我看到使用平方符号提到的其他问题的答案,但在这里使用它会出现错误“':'预期”,不使用平方符号会在我的数据库中创建一个名为“updater”的新字段,内容为“'update_field': 'update_val'“。

是否有办法做到这一点,或者我应该在每次编辑文档时更新每个值?我对 NOSQL/Firebase 还很陌生,所以这对我来说仍然不太直观。任何帮助表示赞赏。谢谢。

最佳答案

您所做的并不是 Firestore API 的有效使用。您无法组成字段/值对的字符串 - 文档数据必须是 JavaScript 对象。您必须使用属性字段的名称及其关联值来填充 JavaScript 对象。

这应该有效:

db.collection('this_collection').doc('this_doc').update({
    field: "value"
})

如果您想单独组合对象,请按照 JavaScript 中的常规操作进行操作:

const data = { field: "value" }
db.collection('this_collection').doc('this_doc').update(data)

关于javascript - 使用字符串对象的 Firebase 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60088623/

相关文章:

javascript - 如何使用 Node.js 在 Hexo 等框架中编辑 CSS 和 HTML

firebase - Flutter Firebase 数据库变量在方法后未收到值

javascript - 如何在没有异步 Promise 的情况下编写 Vuex 突变

javascript - 火存储 : onWrite Convert Keywords Array String to Lower Case Items

firebase - 快照监听器是否有限制或费用?

javascript - 如何在没有事件的情况下使用传单简单地获取当前地理位置?

javascript - bean.getValue() 只提取部分值而不是全部值

javascript - Node 无法读取未定义的属性 'forEach'

ios - 无法在 iOS 中同时使用 Urban Airship 和 Facebook 云消息传递

javascript - Firestore/Javascript : Uncaught (in promise) TypeError: Failed to execute 'appendChild' on 'Node' : 1 argument required, 但仅存在 0