【问题标题】:Cassandra: Writing binary blob to table with node.jsCassandra:使用 node.js 将二进制 blob 写入表
【发布时间】:2018-11-12 03:32:35
【问题描述】:

我试图让我的 node.js 应用程序读取文件,然后将其添加到表中,但我无法弄清楚。

这是表格信息

CREATE TABLE tracking.tracking_data (
first_name text,
last_name text,
timestamp timestamp,
heat double,
location text,
m blob,
speed double,
telepathy_powers int,
PRIMARY KEY ((first_name, last_name), timestamp)

这里是 node.js 代码:

var populateData = function(first_name, last_name, timestamp, heat, location, speed, telepathy_powers, file) {
fs.readFile(file, 'binary', function(err, data) {
if (err) {
return console.log(err);
} else {
var client = new cassandra.Client({
contactPoints: ['node1', 'node2', 'node3'],
keyspace: 'tracking'
});
var query = 'INSERT INTO tracking_data (first_name,last_name,timestamp,heat,location,m,speed,telepathy_powers) VALUES (?,?,?,?,?,?,?,?);';
const parms = [first_name, last_name, timestamp, heat, location, data, speed, telepathy_powers];
client.execute(query, parms, {
prepare: true
}, function(err, result) {
if (err) {
console.log('\n' + err);
}
});
}
});

错误是:

TypeError: Not a valid blob, expected Buffer obtained 'root:x:0:0:root:/root:/bin/ash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:1

【问题讨论】:

    标签: javascript node.js cassandra


    【解决方案1】:

    我怀疑问题是因为您指定了文件的编码,即使它是二进制的。 Cassandra 驱动程序需要 Buffer 类型,当 fs.readFile 仅使用文件名和处理程序调用时返回,没有编码(参见 fs.readFile docs)。

    【讨论】:

    • 怎么样?我看不到任何地方可以这样做。它甚至不会让我投票赞成你的答案,因为这是一个新帐户。
    • 嗯,stackoverflow.com/help/someone-answers ?如果不起作用 - 然后保持原样......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2010-10-18
    • 1970-01-01
    • 2012-04-25
    • 2015-06-09
    • 2015-07-22
    相关资源
    最近更新 更多