无法从 JS 中的对象读取 属性
Can't read property from object in JS
我无法读取使用 MongoDB 获得的对象 属性。我使用 MeteorJS。
我这样创建对象
header = ["name"];
values = ["word1", "word2"];
var tmp = {};
var data = new Array();
for (var cnt = 0; cnt < values.length; cnt++){
for (var i = 0; i < header.length; i++) {
temp[header[i]] = values[i];
}
data.push(temp);
比我这样插入MongoDB
for (obj in data) {
Badwords.insert(data[obj]);
}
我有 select 数据,无法读取 属性。有浏览器控制台
Badwords.findOne()
Object {_id: "uNRNDtp3RGrKA6gWz", "name": "word1"}
Badwords.findOne().hasOwnProperty("name")
false
Badwords.findOne().hasOwnProperty('name')
false
Badwords.findOne().hasOwnProperty('\"name\"')
false
Badwords.findOne().hasOwnProperty('\'name\'')
false
Badwords.findOne().hasOwnProperty("\'name\'")
false
Badwords.findOne().hasOwnProperty("\"name\"")
false
Badwords.findOne()
Object {_id: "uNRNDtp3RGrKA6gWz", "name": "word1"}
Badwords.findOne()["name"]
undefined
但是
Badwords.findOne().hasOwnProperty("_id")
true
属性 名称中可能存在问题:它是 "name"
,但不是 name
。
keys
未定义。
Badwords.findOne().keys
undefined
richardtz,我添加方法getKey()
:
var myObj = Badwords.findOne()
undefined
myObj.getkey = function(obj){
var keys = [];
for(var key in obj){
keys.push(key);
}
return keys;
}
myObj.getkey(myObj)
["_id", "name", "getkey"]
属性 名称是 "name" 并且长度为 5。检查它:
var prop = '';
for (var i in Badwords.findOne()) {
prop = i;
}
"name"
prop.length
5
prop.charCodeAt(0)
65279
prop.charCodeAt(1)
110
我 运行 你的代码,发现了 2 个错误。第一个是在第一个 for 循环末尾缺少 },第二个是定义一个 tmp 对象并改用 temp。我 运行 的正确代码是:
header = ["name"];
values = ["word1", "word2"];
var temp = {};
var data = new Array();
for (var cnt = 0; cnt < values.length; cnt++) {
for (var i = 0; i < header.length; i++) {
temp[header[i]] = values[i];
}
data.push(temp);
}
for (obj in data) {
Badwords.insert(data[obj]);
}
然后 hasOwnProperty 给出了想要的结果
Badwords.findOne().hasOwnProperty("name");
true
我无法读取使用 MongoDB 获得的对象 属性。我使用 MeteorJS。 我这样创建对象
header = ["name"];
values = ["word1", "word2"];
var tmp = {};
var data = new Array();
for (var cnt = 0; cnt < values.length; cnt++){
for (var i = 0; i < header.length; i++) {
temp[header[i]] = values[i];
}
data.push(temp);
比我这样插入MongoDB
for (obj in data) {
Badwords.insert(data[obj]);
}
我有 select 数据,无法读取 属性。有浏览器控制台
Badwords.findOne()
Object {_id: "uNRNDtp3RGrKA6gWz", "name": "word1"}
Badwords.findOne().hasOwnProperty("name")
false
Badwords.findOne().hasOwnProperty('name')
false
Badwords.findOne().hasOwnProperty('\"name\"')
false
Badwords.findOne().hasOwnProperty('\'name\'')
false
Badwords.findOne().hasOwnProperty("\'name\'")
false
Badwords.findOne().hasOwnProperty("\"name\"")
false
Badwords.findOne()
Object {_id: "uNRNDtp3RGrKA6gWz", "name": "word1"}
Badwords.findOne()["name"]
undefined
但是
Badwords.findOne().hasOwnProperty("_id")
true
属性 名称中可能存在问题:它是 "name"
,但不是 name
。
keys
未定义。
Badwords.findOne().keys
undefined
richardtz,我添加方法getKey()
:
var myObj = Badwords.findOne()
undefined
myObj.getkey = function(obj){
var keys = [];
for(var key in obj){
keys.push(key);
}
return keys;
}
myObj.getkey(myObj)
["_id", "name", "getkey"]
属性 名称是 "name" 并且长度为 5。检查它:
var prop = '';
for (var i in Badwords.findOne()) {
prop = i;
}
"name"
prop.length
5
prop.charCodeAt(0)
65279
prop.charCodeAt(1)
110
我 运行 你的代码,发现了 2 个错误。第一个是在第一个 for 循环末尾缺少 },第二个是定义一个 tmp 对象并改用 temp。我 运行 的正确代码是:
header = ["name"];
values = ["word1", "word2"];
var temp = {};
var data = new Array();
for (var cnt = 0; cnt < values.length; cnt++) {
for (var i = 0; i < header.length; i++) {
temp[header[i]] = values[i];
}
data.push(temp);
}
for (obj in data) {
Badwords.insert(data[obj]);
}
然后 hasOwnProperty 给出了想要的结果
Badwords.findOne().hasOwnProperty("name");
true