草庐IT

database - 在 Firestore 中更新值时没有字段错误

coder 2024-07-09 原文

我正在尝试使用 golang 库更新 firestore 中的文档。出于某种原因,我收到一个错误:“没有字段\"BirthYear\” 错误,我不确定为什么。出生年份绝对是我尝试更新的值之一。

我假设我错误地配置了我的结构,但我看不出如何配置。这是我的结构和我的更新代码:

sharedstructs.Profile

type Profile struct {
    UID                string                `json:"UID" firestore:"UID"`
    ContactEmail       string                `json:"ContactEmail,omitempty" firestore:"ContactEmail"`
    BirthMonth         int64                 `json:"BirthMonth,omitempty" firestore:"BirthMonth"`
    BirthYear          int64                 `json:"BirthYear,omitempty" firestore:"BirthYear"`
    Gender             string                `json:"Gender,omitempty" firestore:"Gender"`
    Unit               string                `json:"Unit,omitempty" firestore:"Unit"`
    CurrentStatus      string                `json:"CurrentStatus,omitempty" firestore:"CurrentStatus"`
    Country            string                `json:"Country,omitempty" firestore:"Country"`
    ExperienceType     string                `json:"ExperienceType,omitempty" firestore:"ExperienceType"`
    DateJoined         time.Time             `json:"DateJoined,omitempty" firestore:"DateJoined"`
    Abilities          []Ability             `json:"Abilities,omitempty" firestore:"Abilities"`
    Goals              []Goal                `json:"Goals,omitempty" firestore:"Goals"`
    Roles              []Role                `json:"Roles,omitempty" firestore:"Roles"`
    TermsAndConditions []TermsAndConditions  `json:"TermsAndConditions,omitempty" firestore:"TermsAndConditions"`
    TimeZone           string                `json:"TimeZone,omitempty" firestore:"TimeZone"`
    BaselineTests      []BaselineTestResults `json:"BaselineTests,omitempty" firestore:"BaselineTests"`
    UpdatedDate        time.Time             `json:"UpdatedDate,omitempty" firestore:"UpdatedDate"`
    FirstName          *string               `json:"FirstName,omitempty" firestore:"FirstName"`
    LastName           string                `json:"LastName,omitempty" firestore:"LastName"`
    DisplayName        string                `json:"DisplayName,omitempty" firestore:"DisplayName"`
}

更新函数

func updateProfileWithSpecficValues(documentName string, values sharedstructs.Profile, overwriteValues []string) error {
    ctx := context.Background()
    app := firestorehelper.GetFirestoreApp()

    client, err := app.Firestore(ctx)
    if err != nil {
        return err
    }
    defer client.Close()

    //Set the updated date
    values.UpdatedDate = time.Now()
    wr, error := client.Doc(collectionName+"/"+documentName).Set(ctx, values, firestore.Merge(overwriteValues))
    if error != nil {
        return error
    }
    fmt.Println(wr.UpdateTime)
    //Assume success
    return nil
}

最佳答案

https://godoc.org/cloud.google.com/go/firestore#Merge

Merge returns a SetOption that causes only the given field paths to be overwritten. Other fields on the existing document will be untouched. It is an error if a provided field path does not refer to a value in the data passed to Set.

您没有在values 中发送BirthYear(默认值),但是在overwriteValues 中指定了BirthYear

关于database - 在 Firestore 中更新值时没有字段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54013105/

有关database - 在 Firestore 中更新值时没有字段错误的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  4. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  5. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  6. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  7. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  8. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  9. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  10. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

随机推荐