无法删除来自 Cassandra 数据库的 rows.__columns 属性
cannot delete rows.__columns property that comes from Cassandra db
我有一个 node.js 从 Cassandra 中提取数据的代码,我试图从来自 cassandra 驱动程序的对象中删除列,但我收到了一个错误。
'use strict';
var ResultFormatter = (function () {
function ResultFormatter() {
}
ResultFormatter.RemoveColumnNames = function (data) {
data.forEach(function (obj) {
if (obj['__columns']) {
delete obj['__columns'];
}
});
};
return ResultFormatter;
})();
module.exports = ResultFormatter;
以及调用它的代码:
this._client.execute(query, [], function (err, result) {
if (err) {
callback(err);
} else {
try {
var siteList = [];
ResultFormatter.RemoveColumnNames(result.rows);
result.rows.forEach(function (row) {
var site = row;
site.contractedResources = JSON.parse(row.contractedResources);
siteList.push(site);
});
} catch (er) {
callback(er);
return;
}
callback(null, siteList);
}
});
问题是__columns 属性没有删除
Node 版本是 0.10.40 安装在 CentOS 6.4 上
Cassandra 在同一个盒子上。
有趣的是,我们在 Windows 盒子上安装了另一个 Node 和 Cassandra,并且那里运行的代码完全相同。
我研究了 javascript 有关在对象中使用删除的规范。
我的问题是如何处理 result.rows?为什么它与来自 windows 盒子中的 cassandra 的不同?
有什么想法吗?
我不知道你为什么要删除 private not enumerable property in javascript。
您不应更改外部模块返回的实例的私有属性。
如果要遍历行中的所有 public(可枚举)属性,可以使用:
row.forEach(function (value, name) {
console.log('column %s with value %s', name, value);
});
或者你可以连载整个row
(不包含私有道具):
JSON.stringify(row);
我有一个 node.js 从 Cassandra 中提取数据的代码,我试图从来自 cassandra 驱动程序的对象中删除列,但我收到了一个错误。
'use strict';
var ResultFormatter = (function () {
function ResultFormatter() {
}
ResultFormatter.RemoveColumnNames = function (data) {
data.forEach(function (obj) {
if (obj['__columns']) {
delete obj['__columns'];
}
});
};
return ResultFormatter;
})();
module.exports = ResultFormatter;
以及调用它的代码:
this._client.execute(query, [], function (err, result) {
if (err) {
callback(err);
} else {
try {
var siteList = [];
ResultFormatter.RemoveColumnNames(result.rows);
result.rows.forEach(function (row) {
var site = row;
site.contractedResources = JSON.parse(row.contractedResources);
siteList.push(site);
});
} catch (er) {
callback(er);
return;
}
callback(null, siteList);
}
});
问题是__columns 属性没有删除
Node 版本是 0.10.40 安装在 CentOS 6.4 上 Cassandra 在同一个盒子上。
有趣的是,我们在 Windows 盒子上安装了另一个 Node 和 Cassandra,并且那里运行的代码完全相同。
我研究了 javascript 有关在对象中使用删除的规范。
我的问题是如何处理 result.rows?为什么它与来自 windows 盒子中的 cassandra 的不同?
有什么想法吗?
我不知道你为什么要删除 private not enumerable property in javascript。
您不应更改外部模块返回的实例的私有属性。
如果要遍历行中的所有 public(可枚举)属性,可以使用:
row.forEach(function (value, name) {
console.log('column %s with value %s', name, value);
});
或者你可以连载整个row
(不包含私有道具):
JSON.stringify(row);