Golang RethinkDB ChangeFeed 结构

标签 go struct unmarshalling rethinkdb

我想知道是否有人可以解释如何将我的 changefeed 游标值解码为特定的结构类型。

var message map[string]interface{}

for chatFeedCursor.Next(&message) {
    fmt.Println(message)
}

map[new_val:map[club_id:ea2eb6e2-755f-4dad-922d-e3693b6e55c6 date:2017-04-07 14:48:17.714 +0100 +01:00 id:e389ab54-963e-4b33-9b34-adcb6ec5b17e message:what is the meaning of life? user_id:00ff679f-9421-4b8b-ae7f-d11cf2adaee2] old_val:]

但是,我希望将响应映射到结构 ChatMessage。

更新:

我试过:

var message ChatMessage

但是,似乎我的任何数据都没有设置到结构中。

{ 0001-01-01 00:00:00 +0000 UTC}

我的结构:

type ChatMessage struct {
    ID      string        `json:"id" gorethink:"id,omitempty"`
    UserID      string    `json:"user_id" gorethink:"user_id"`
    ClubID      string    `json:"club_id" gorethink:"club_id"`
    Message     string    `json:"message" gorethink:"message"`
    Date    time.Time     `json:"date" gorethink:"date"`
}

谢谢。

最佳答案

我想通了!

问题是我没有在 rethinkdb 变更请求中指定字段。

上一个代码:

chatFeedCursor, _ := gorethink.Table("club_chat").Changes().Run(gorethinkSession)

工作代码:

chatFeedCursor, _ := gorethink.Table("club_chat").Changes().Field("new_val").Run(gorethinkSession)

现在 .Next() 值毫无问题地映射到我的结构。

关于Golang RethinkDB ChangeFeed 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43280088/

相关文章:

mongodb - 由于缺少 'ISODate',使用时间时 Golang + mgo 查询 mongodb 失败

java - Jax-b 在解码时解释过多

go - Terraform 提供程序应如何处理服务器端应用的默认值?

pointers - Go 中的非指针错误不确定是什么意思

c++ - 为什么我不能在结构中初始化char数组?

c - 为什么递增指针可以工作,但将其视为数组会失败?第2部分

c - 空闲内存用于 C 中的结构但失败(代码来自 C Primer Plus 第 6 版)

C# marhsal 函数返回指向结构数组的指针

java - 按属性名称与标记名称解码 XML 元素

go - 如何为私有(private)注册表登录凭据创建 “RegistryAuth”