[英]Can't read property from object in JS
I can't read Object property got with MongoDB. 我无法读取MongoDB附带的Object属性。 I work with MeteorJS. 我使用MeteorJS。 I create object like this 我创建这样的对象
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);
Than I insert into MongoDB like this 比我这样插入MongoDB
for (obj in data) {
Badwords.insert(data[obj]);
}
I select data and cannot read property. 我选择数据,但无法读取属性。 There're browser console 有浏览器控制台
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
But 但
Badwords.findOne().hasOwnProperty("_id")
true
Maybe problem in property name: it is "name"
, but not name
. 也许是属性名称存在问题:它是"name"
,而不是name
。 keys
is undefined. keys
是未定义的。
Badwords.findOne().keys
undefined
richardtz, I add method getKey()
: 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"]
Property name is "name" and has length 5. To check it: 属性名称为“名称”,长度为5。要检查它:
var prop = '';
for (var i in Badwords.findOne()) {
prop = i;
}
"name"
prop.length
5
prop.charCodeAt(0)
65279
prop.charCodeAt(1)
110
I ran your code and found 2 bugs. 我运行了您的代码,发现了2个bug。 The first, was a missing } at the end of the first for loop and the second one, you define a tmp object and use temp instead. 第一个,在第一个for循环的末尾缺少},第二个,您定义了一个tmp对象并改用temp。 The correct code i ran were: 我运行的正确代码是:
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]);
}
And then the hasOwnProperty gives the desired results 然后hasOwnProperty提供所需的结果
Badwords.findOne().hasOwnProperty("name");
true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.