关于一个使用nodejs中mongoose插件的错误

先记录一下当时项目的环境:
使用的express框架为基础,mongoose插件为数据库工具。

由于新功能的开发,需要修改原有mongoDB集合的 mongoose的Schema 结构。
新Schema 结构的格式应该是这样:

1
2
3
4
5
6
7
{
     parent_node:[
         a_node:Number,
         b_node:String,
         c_node:String
    ]
}

mongo中对应集合test中的文档也是按照这个结构来保存的:

1
2
3
4
5
6
7
{
     "parent_node":[
         "a_node":1,
         "b_node":"b",
         "c_node":"c"
    ]
}

但是由于失误,集合test的Schema 结构写错了,写成了:

1
2
3
4
5
6
7
{
     a_node:Number,               #此key写到了parent_node的外边
     parent_node:[
         b_node:String,
         c_node:String
    ]
}

于是在开发完后,想要获取a_node的值,发现总是报”a_node is undefinded”的错误

1
2
3
4
5
   var testData = findAllTest();   #findAllTest方法就是获取集合test中所有的数据
   for(var i in testData){
       var a_node = testData[i].parent_node.a_node;
       .......
   }

于是通过console.log()输出testData[i],发现输出的结果和集合中的数据的结构是一样的,a_node存在,也没有拼写错误,于是感到很奇怪。后来知道发现集合test的Schema 结构写错了,改正后,a_node的值可以正确获取了。

由此可以看出,mongoose的Schema 结构可以过滤设置错误的字段,就像上例中,a_node如果和集合中的结构不同,是无法被使用的,即使console.log显示其存在于testData[i]中。

由 晓狼 发表于 2015-04-16 0 评论

0 个评论

还没有评论哦,赶紧留下你的爪印吧 !
发表评论

上一篇文章
«
下一篇文章
»
 友情链接:web集结号     京ICP备11006177号