javascript - 在 Cassandra 和 Node.js 中使用用户定义的类型

标签 javascript node.js cassandra

我正在尝试将 Cassandra 中的用户定义类型与 Nodejs 一起使用。 按照文档,我成功地在 cqlsh 中完成了它( https://www.datastax.com/documentation/cql/3.1/cql/cql_using/cqlUseUDT.html )。我设法在 cqlsh 中插入项目,但不使用 cassandra-driver模块。

我知道它们是使用 javascript ( http://www.datastax.com/documentation/developer/nodejs-driver/1.0/nodejs-driver/reference/nodejs2Cql3Datatypes.html ) 的一些复杂之处,我已经尝试了提供的不同选项,但我无法让它工作。

以下是我的试验及其产生的错误消息:

var insertQuery = 'INSERT INTO mykeyspace.users (id, name) VALUES (?, ?)'

client.execute(insertQuery, ['62c36092-82a1-3a00-93r1-46196ee77204', { firstname: 'paul', lastname: 'jacques'}], {hints: ['uuid', 'map<text, text>']}, function(err) { console.log(err);})

{ name: 'ResponseError', message: 'Not enough bytes to read 0th field java.nio.HeapByteBuffer[pos=0 lim=9 cap=9]', info: 'Represents an error message from the server', code: 8704, query: 'INSERT INTO mykeyspace.users (id, name) VALUES (?, ?)' }

client.execute(insertQuery, ['62c36092-82a1-3a00-93r1-46196ee77204', { firstname: 'paul', lastname: 'jacques'}], { prepare: true }, function(err) { console.log(err);})

    { [TypeError: Not a valid blob, expected Buffer obtained { firstname: 'paul', lastname: 'jacques' }]
  query: 'INSERT INTO mykeyspace.users (id, name) VALUES (?, ?)' }

那么让它工作的正确语法是什么?

注意。我使用的是 cassandra 2.1.1

最佳答案

DataStax Node.js 驱动程序尚不支持用户定义类型,因此驱动程序无法相应地序列化数据。

您可以在 CQL 中使用 json 表示法来访问各个字段。例如,类似以下的查询将起作用:

SELECT addr.street, addr.city FROM location WHERE id=?;

UPDATE SET addr['street'] = ?, addr['city'] = ? WHERE id = ?

关于javascript - 在 Cassandra 和 Node.js 中使用用户定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732120/

相关文章:

javascript - 如何在 React.js 中根据路由过滤数组?

node.js - 在 RHEL 上将 Node 0.10 升级到 0.12.x

javascript - 我应该关心 npm 安装期间 NPM 显示的漏洞吗?

java - 插入期间未配置的列族错误

javascript - 复制 HTML 或使用 JS 移动元素以实现响应式站点

javascript - 如何在谷歌图表中使用日期和时间

node.js - 运行 npm test 时如何控制控制台文本颜色?

django - 在 django 中与 cassandra 交互?

error-handling - Cassandra如何处理错误?当某些节点出现故障时,它会重试还是失败请求?

javascript - 如何在没有 API 的情况下获取 coolors 的值(value)