Mongoose读取集合数据始终返回空?关于Mongoose会自动添加的坑爹的"s"
2016-12-27 23:24
489 查看
在用Node.js+express+MongoDB搭建团队官网,说实话有点后悔用了MongoDB。虽然MongoDB基于文档的数据存储方式很让人心动,但是感觉数据的组织结构显得很混乱,对于用惯了Mysql的我来说感觉很不舒服。并且其实团队官网这种项目不适合用MongoDB 这种数据库,纯当学习吧。
今天在写后台管理页面的登录功能时遇到了一点问题,花费了至少7个小时,,,很心累。先简述一下背景:
1.数据库中有一个admin集合,注意,是admin,集合中的文档包含了username、password、name、rank
2.路由控制器中接受页面传来的username和password,对比数据库看是否成功登录。
以上就是简要背景,遇到的问题就是:无论怎么改代码,从数据库中取出的值始终是空的。
以下是代码:
真是神奇的特性,,,好生气,,,
今天在写后台管理页面的登录功能时遇到了一点问题,花费了至少7个小时,,,很心累。先简述一下背景:
1.数据库中有一个admin集合,注意,是admin,集合中的文档包含了username、password、name、rank
2.路由控制器中接受页面传来的username和password,对比数据库看是否成功登录。
以上就是简要背景,遇到的问题就是:无论怎么改代码,从数据库中取出的值始终是空的。
以下是代码:
//schema var mongoose = require('mongoose'); var AdminSchema = new mongoose.Schema({ username: String, password: String, member: String, rank: String }); module.exports = AdminSchema;
//model var mongoose = require('mongoose'); var AdminSchema = require('../schemas/admin'); var Admin = mongoose.model('Admin', AdminSchema); /* * * FUCK! FUCK MONGOOSE! FUCK MONGODB!!!!! * 2016.12.27 an bug cost me more than 7 hours!!!!! * * ATTENTION!!!! * Mongoose会自动给集合名加“s” * var Admin = mongoose.model('Admin’,userShema); * 比如这个model('Admin’,userShema)中的Admin映射到Mongodb里就是admins * 所以如果集合名为Admin,读取数据始终为空,改成Admins就好了!!!!!FUCK!!!! * */ module.exports = Admin;
//route var express = require('express'); var router = express.Router(); var Admin = require('../data/models/admin'); /* GET admin page. */ router.get('/', function(req, res, next) { res.render('admin'); }); /* 处理登录 */ router.post('/login', function(req, res, next) { Admin.find({}, function(err, docs) { if(err) { console.log("err"); }else { console.log(docs);//打印结果始终为 [] } }) }); module.exports = router;以上就是三部分主要代码,route中的console.log(docs)始终打印空数组,检查了很多地方,没有任何问题,也百度了很多,一开始可能百度方式不对,,,后来百度到mongoose在创建model的时候,会自动添加s,如上述代码中的标红字体所示。所以其实一直读取的是admins集合,但是并没有这个集合,只有admin,最后把admin集合改名admins就好了。。。
真是神奇的特性,,,好生气,,,
相关文章推荐
- 关于【finder不能完成该操作 因为未能读取或写入"文件名"中的某些数据(错误代码-36)】快速解决办法
- 给dropdownlist手动添加一列"--请选择--"(不是从数据库中读取的数据)
- 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
- "添加"模态框中某些数据不被清空
- 关于在"a"标签中添加点击事件的一些问题
- 关于oracle数据库中直接修改表中数据点击小锁出现"these query results are not updateable"的问题
- WCF 提示 "由于正在读取的 XML 数据的嵌套级比配额所允许的多,因此已超出最大读取深度 (32)" 的解决办法
- Thinkphp框架中使用数据对象自动处理添加数据库数据时,关于在数据库表中添加新列时出现新列的数据添加不上去?
- 实现对象属性的"监控" - 修改数据后自动更新页面
- 关于spring MVC 返回集合或对象自动转成json串的问题
- 关于"Auto-Correct"——自动修正功能原理谈究
- 数据绑定时出现"这将导致集合中的两个绑定绑定到同一个属性"错误.
- 那些年,我关于java集合的"老照片"!
- 关于heritrix安装配置时出现"必须限制口令文件读取访问权限"的解决方法
- EditText 监听内容改变,自动添加":"
- 关于向数据库添加数据后返回该行的ID值(标识符)的值
- iOS - CoreData服务器数据返回是"<null>":
- 关于集合Set里每一个元素前会自动添加一个空格,不知道为什么,有待研究
- 关于oracle读取数据时,自动进行HASH处理的隐含参数:_gby_hash_aggregation_enabled
- 关于"无法验证数据"的问题