Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
93f71456
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
93f71456
编写于
12月 29, 2020
作者:
H
huili
提交者:
GitHub
12月 29, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4707 from taosdata/hotfix/TD-2550
[TD-2550]<fix>: fix nodejs connector of td2.0-connector cannot use in…
上级
a98d9f83
6bc7ea25
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
22 deletion
+30
-22
src/connector/nodejs/nodetaos/cinterface.js
src/connector/nodejs/nodetaos/cinterface.js
+8
-17
src/connector/nodejs/nodetaos/taosresult.js
src/connector/nodejs/nodetaos/taosresult.js
+2
-2
src/connector/nodejs/test/test.js
src/connector/nodejs/test/test.js
+20
-3
未找到文件。
src/connector/nodejs/nodetaos/cinterface.js
浏览文件 @
93f71456
...
...
@@ -144,18 +144,9 @@ function convertBinary(data, num_of_rows, nbytes = 0, offset = 0, micro=false) {
function
convertNchar
(
data
,
num_of_rows
,
nbytes
=
0
,
offset
=
0
,
micro
=
false
)
{
data
=
ref
.
reinterpret
(
data
.
deref
(),
nbytes
*
num_of_rows
,
offset
);
let
res
=
[];
let
currOffset
=
0
;
// every 4 bytes, a character is encoded;
while
(
currOffset
<
data
.
length
)
{
let
dataEntry
=
data
.
slice
(
currOffset
,
currOffset
+
nbytes
);
//one entry in a row under a column;
if
(
dataEntry
.
readInt64LE
(
0
)
==
FieldTypes
.
C_NCHAR_NULL
)
{
res
.
push
(
null
);
}
else
{
res
.
push
(
dataEntry
.
toString
(
"
utf16le
"
).
replace
(
/
\u
0000/g
,
""
));
}
currOffset
+=
nbytes
;
}
let
dataEntry
=
data
.
slice
(
0
,
nbytes
);
//one entry in a row under a column;
//TODO: should use the correct character encoding
res
.
push
(
dataEntry
.
toString
(
"
utf-8
"
));
return
res
;
}
...
...
@@ -351,7 +342,8 @@ CTaosInterface.prototype.useResult = function useResult(result) {
CTaosInterface
.
prototype
.
fetchBlock
=
function
fetchBlock
(
result
,
fields
)
{
//let pblock = ref.ref(ref.ref(ref.NULL)); // equal to our raw data
let
pblock
=
this
.
libtaos
.
taos_fetch_row
(
result
);
if
(
pblock
==
null
)
{
let
num_of_rows
=
1
;
if
(
ref
.
isNull
(
pblock
)
==
true
)
{
return
{
block
:
null
,
num_of_rows
:
0
};
}
...
...
@@ -363,17 +355,16 @@ CTaosInterface.prototype.fetchBlock = function fetchBlock(result, fields) {
if
(
ref
.
isNull
(
fieldL
)
==
false
)
{
for
(
let
i
=
0
;
i
<
fields
.
length
;
i
++
)
{
let
plen
=
ref
.
reinterpret
(
fieldL
,
4
,
i
*
4
);
let
plen
=
ref
.
reinterpret
(
fieldL
,
4
,
i
*
4
);
let
len
=
plen
.
readInt32LE
(
0
);
fieldlens
.
push
(
len
);
fieldlens
.
push
(
len
);
}
}
let
blocks
=
new
Array
(
fields
.
length
);
blocks
.
fill
(
null
);
num_of_rows
=
Math
.
abs
(
num_of_rows
);
//
num_of_rows = Math.abs(num_of_rows);
let
offset
=
0
;
pblock
=
pblock
.
deref
();
for
(
let
i
=
0
;
i
<
fields
.
length
;
i
++
)
{
pdata
=
ref
.
reinterpret
(
pblock
,
8
,
i
*
8
);
pdata
=
ref
.
ref
(
pdata
.
readPointer
());
...
...
src/connector/nodejs/nodetaos/taosresult.js
浏览文件 @
93f71456
...
...
@@ -25,6 +25,7 @@ function TaosResult(data, fields) {
* @function pretty
* @since 1.0.6
*/
TaosResult
.
prototype
.
pretty
=
function
pretty
()
{
let
fieldsStr
=
""
;
let
sizing
=
[];
...
...
@@ -46,8 +47,7 @@ TaosResult.prototype.pretty = function pretty() {
row
.
data
.
forEach
((
entry
,
i
)
=>
{
if
(
this
.
fields
[
i
].
_field
.
type
==
9
)
{
entry
=
entry
.
toTaosString
();
}
else
{
}
else
{
entry
=
entry
==
null
?
'
null
'
:
entry
.
toString
();
}
rowStr
+=
entry
...
...
src/connector/nodejs/test/test.js
浏览文件 @
93f71456
...
...
@@ -48,6 +48,7 @@ for (let i = 0; i < 10000; i++) {
// Select
console
.
log
(
'
select * from td_connector_test.all_types limit 3 offset 100;
'
);
c1
.
execute
(
'
select * from td_connector_test.all_types limit 2 offset 100;
'
);
var
d
=
c1
.
fetchall
();
console
.
log
(
c1
.
fields
);
console
.
log
(
d
);
...
...
@@ -77,13 +78,24 @@ c1.query('select stddev(_double), stddev(_bigint), stddev(_float) from all_types
})
// Binding arguments, and then using promise
var
q
=
c1
.
query
(
'
select
*
from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;
'
).
bind
(
new
Date
(
1231
),
100
)
var
q
=
c1
.
query
(
'
select
_nchar
from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;
'
).
bind
(
new
Date
(
1231
),
100
)
console
.
log
(
q
.
query
);
q
.
execute
().
then
(
function
(
r
)
{
r
.
pretty
();
});
var
q
=
c1
.
query
(
'
select * from td_connector_test.weather
'
);
console
.
log
(
q
.
query
);
q
.
execute
().
then
(
function
(
r
)
{
//console.log(r);
r
.
pretty
();
});
function
sleep
(
sleepTime
)
{
for
(
var
start
=
+
new
Date
;
+
new
Date
-
start
<=
sleepTime
;
)
{
}
}
sleep
(
10000
);
// Raw Async Testing (Callbacks, not promises)
function
cb2
(
param
,
result
,
rowCount
,
rd
)
{
...
...
@@ -129,16 +141,21 @@ setTimeout(function(){
c1
.
fetchall_a
(
thisRes
,
cb4
,
param
);
},
100
);
// Async through promises
var
aq
=
c1
.
query
(
'
select count(*) from td_connector_test.all_types;
'
,
false
);
aq
.
execute_a
().
then
(
function
(
data
)
{
data
.
pretty
();
});
c1
.
query
(
'
describe td_connector_test.stabletest;
'
).
execute_a
().
then
(
r
=>
r
.
pretty
());
c1
.
query
(
'
describe td_connector_test.stabletest
'
).
execute_a
().
then
(
function
(
r
){
r
.
pretty
()
});
setTimeout
(
function
(){
c1
.
query
(
'
drop database td_connector_test;
'
);
},
200
);
setTimeout
(
function
(){
conn
.
close
();
},
2000
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录