如何使用gocql查询cassandra UDT?
卡桑德拉表与UDT如何使用gocql查询cassandra UDT?,go,cassandra,gocql,Go,Cassandra,Gocql,卡桑德拉表与UDT 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) ); gqcql查询 err := Session.Que
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)
);
gqcql查询
err := Session.Query("SELECT user_id, password FROM user_by_phone WHERE phone=?;", phone).Scan(
&user.UserID,
&user.Password,
)
使用此代码,即使cassandra表中有记录,它仍返回not found Event。
如何使用gocql通过UDT进行查询?尝试这样定义结构(在结构定义中使用
cql
而不是json
)
根据这里的例子:
这对我起了作用:
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)
}
尝试这样定义结构(在结构定义中使用
cql
而不是json
)
根据这里的例子:
这对我起了作用:
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)
}
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)
}