我无法读取MongoDB附带的Object属性。我使用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]);
}


我选择数据,但无法读取属性。有浏览器控制台

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"]

最佳答案

我运行了您的代码,发现2个bug。第一个,在第一个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

10-07 12:44
查看更多