我现在在写一个写入hbase的操作系统。前端是vue.js,后端是node.js,数据库RT,是hbase。我目前前端可以发送数据到后端接收,但是在写入的时候,总是报错。
Users/user/Desktop/web/node_modules/hbase/lib/row.js:169
return args[0].apply(this, [null, cells]);
TypeError: Cannot read property 'apply' of undefined
at client.connection.get (/Users/user/Desktop/web/node_modules/hbase/lib/row.js:169:20)
at IncomingMessage.res.on (/Users/user/Desktop/web/node_modules/hbase/lib/connection.js:142:16)
at IncomingMessage.emit (events.js:187:15)
at endReadableNT (_stream_readable.js:1091:14)
at process._tickCallback (internal/process/next_tick.js:174:19)
node.js:可以写入数据库,但会停止程序并报出上边的错误。
router.post('/uploadHbase', function(req, res){
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
console.log(fields);//这里就是post的XXX 的数据
client.table('test2')
.create('col_family', function(err, success){
this
.row('rowkey1')
.put('col_family:model_contents', 'testContent', function(err, success) {
this.get(fields.colFamilyPut, function (err, cells) {
this.exists(function (err, exists) {
assert.ok(exists);
});
});
});
});
});
res.json({
status:'0',
msg:'',
});
});
这个是在同一个路由下可以运行的,提交的是不同路由
router.post('/upload', function(req, res){
var form = new formidable.IncomingForm();
form.uploadDir = path.join(__dirname, '/upload');
form.parse(req, function (err, fields, files) {
console.log(fields);//这里就是post的XXX 的数据
fs.readFile(files.file.path, 'utf8', (err, data) => {
if (err) {
console.log(err);
}
var obj = JSON.parse(data);
console.log(obj);
//Put to hbase
client.table(‘test’)
.create('col_family', function(err, success){
this
.row('rowkey')
.put('col_family:model_contents', JSON.stringify(obj), function(err, success) {
this.get(fields.colFamilyPut, function (err, cells) {
this.exists(function (err, exists) {
assert.ok(exists);
console.log(success);
});
});
});
});
});
同在一个路由下的另一个post就完全没有问题,可以写入hbase数据库,完全不知道啥原因。
ok。这个问题的报错点在于断言测试(assert).