首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gocql查询cassandra UDT?

如何使用gocql查询cassandra UDT?
EN

Stack Overflow用户
提问于 2020-10-05 19:37:12
回答 1查看 491关注 0票数 1

Cassandra表和UDT

代码语言:javascript
复制
CREATE TYPE IF NOT EXISTS phone_type(
   code TEXT,
   phone TEXT,
);

CREATE TABLE IF NOT EXISTS user_by_phone(
    user_id UUID,
    phone FROZEN<phone_type>,
    password TEXT,
    PRIMARY KEY (phone)
);

金刚构造

代码语言:javascript
复制
type PhoneType struct {
    Code  string `json:"code"`
    Phone string `json:"phone"`
}
phone := PhoneType{
    Code:  "+1",
    Phone: "7777777777",
}

gqcql查询

代码语言:javascript
复制
err := Session.Query("SELECT user_id, password FROM user_by_phone WHERE phone=?;", phone).Scan(
    &user.UserID,
    &user.Password,
)

使用此代码,即使在cassandra表中有记录,它仍然返回not。如何使用gocql查询UDT?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 10:59:21

尝试像这样定义您的结构(在结构定义中使用cql而不是json )

代码语言:javascript
复制
type PhoneType struct {
    Code  string `cql:"code"`
    Phone string `cql:"phone"`
}

phone := PhoneType{
    Code:  "+1",
    Phone: "7777777777",
}

如下面的示例所示:https://github.com/gocql/gocql/blob/master/udt_test.go

这对我来说是有效的:

代码语言:javascript
复制
    var id gocql.UUID
    var password string
    
    iter := session.Query("SELECT user_id, password FROM user_by_phone WHERE phone=?;", phone).Iter()
    for iter.Scan(&id, &password) {
        fmt.Println("Phone Record:", id, password)
    }
    if err := iter.Close(); err != nil {
        log.Fatal(err)
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64215104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档