Javascript 使用字符串对象更新Firebase

Javascript 使用字符串对象更新Firebase,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在制作一个简单的程序来登录任务,当有人更新字段时,我只想用更新的内容来更新文档,因此我制作了一个字符串生成器来创建参数: function fireBaseUpdateStringMaker(update_field,update_val) { return '\''+update_field+'\''+' : '+'\''+update_val+'\''+',' } 它创建了一个字段:“update_field”:“update_val” 如果我遵循Firebase的文档,那么在代码

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

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)

您所做的不是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)

这真是太棒了!我不太熟悉基于对象的编程,有些值是嵌套的,例如{Dates:{DateCreated:,DateEdited:}}我尝试将其添加到变量中,如下所示:updateObject.Date.DateCreated=但这会导致错误“Uncaught TypeError:无法设置未定义的属性'DateCreated'”,这是因为我的语意吗?有什么解决方法或正确的方法吗?没关系,我想我明白了,我在旧的里面做了一个新的东西,似乎是对的,谢谢你的帮助!伟大的关于堆栈溢出的约定是向上投票并接受您认为有用的答案,以便其他人看到。这非常有效!我不太熟悉基于对象的编程,有些值是嵌套的,例如{Dates:{DateCreated:,DateEdited:}}我尝试将其添加到变量中,如下所示:updateObject.Date.DateCreated=但这会导致错误“Uncaught TypeError:无法设置未定义的属性'DateCreated'”,这是因为我的语意吗?有什么解决方法或正确的方法吗?没关系,我想我明白了,我在旧的里面做了一个新的东西,似乎是对的,谢谢你的帮助!伟大的关于堆栈溢出的约定是向上投票并接受您认为有用的答案,以便其他人可以看到。