1、每次修改app.js或者其他路由js文件,都必须重启node app.js,否则修改不起作用!!!
2、<link rel="stylesheet" href="/css/style.css"><!-- 路径写这个而不是../public/css/style.css -->
我们通过 app.use(express.static(path.join(__dirname, 'public'))) 设置了静态文件目录为 public 文件夹,所以上面代码中的 href='/stylesheets/style.css' 就相当于 href='public/stylesheets/style.css'
3、ejs 的标签系统非常简单,它只有以下三种标签:
<% code %>:JavaScript 代码。
<%= code %>:显示替换过 HTML 特殊字符的内容。
<%- code %>:显示原始 HTML 内容。
4、req.body : 就是 POST 请求信息解析过后的对象,例如我们要访问 POST 来的表单内的 name="password" 域的值,只需访问req.body['password'] 或 req.body.password 即可。
5、res.redirect : 重定向功能,实现了页面的跳转,更多关于 res.redirect 的信息请查阅: http://expressjs.com/api.html#res.redirect 。
6、User :在前面的代码中,我们直接使用了 User 对象。User 是一个描述数据的对象,即 MVC 架构中的模型。前面我们使用了许多视图和控制器,这是第一次接触到模型。与视图和控制器不同,模型是真正与数据打交道的工具,没有模型,网站就只是一个外壳,不能发挥真实的作用,因此它是框架中最根本的部分。
7、解决警告
“express-session deprecated undefined resave option; provide resave option at app.js:29:9
express-session deprecated undefined saveUninitialized option; provide saveUninitialized option at app.js:29:9”
app.use(session({
resave: true, ——这个地方改为true即可。
saveUninitialized: true,
secret: settings.cookieSecret,
key: settings.db,//cookie name
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
store: new MongoStore({
db: settings.db,
host: settings.host,
port: settings.port
})
}));
8、解决报错
“{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version ”
找到 npm 的module mongodb ..node_modulesmongodb
ode_modulessonextindex.js
在catch块改变bson的js本版路径:
bson = require('../build/Release/bson');
变成
bson = require('../browser_build/bson');
如果发现连文件夹browser_biuild都没有的话(我的情况就是这样),直接复制文件:
..node_modulessonuildReleaseson
from
..node_modulessonrowser_buildson
9、报错:“req.flash() requires sessions”“req.flash is not a function”"error setting ttl index on collection : sessions"出现各种未知错误,可尝试把相关依赖更新到最新版本
10、app.get() 和 app.post() 的第一个参数都为请求的路径,第二个参数为处理请求的回调函数,回调函数有两个参数分别是 req 和 res,代表请求信息和响应信息
// GET /search?q=tobi+ferret
req.query.q
// => "tobi ferret"
// GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse
req.query.order
// => "desc"
req.query.shoe.color
// => "blue"
req.query.shoe.type
// => "converse"
// POST user[name]=tobi&user[email]=tobi@learnboost.com
req.body.user.name
// => "tobi"
req.body.user.email
// => "tobi@learnboost.com"
// POST { "name": "tobi" }
req.body.name
// => "tobi"
// GET /user/tj
req.params.name
// => "tj"
// GET /file/javascripts/jquery.js
req.params[0]
// => "javascripts/jquery.js"
// ?name=tobi
req.param('name')
// => "tobi"
// POST name=tobi
req.param('name')
// => "tobi"
// /user/tobi for /user/:name
req.param('name')
// => "tobi"
11、报错:“connection strategy not found”
解答:app.use(session({
resave: true,
saveUninitialized: true,
secret: settings.cookieSecret,
key: settings.db,//cookie name
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
store: new MongoStore({
// db: settings.db,
// host: settings.host,
// port: settings.port
url: 'mongodb://localhost/teamworkapp'//使用这个使用前面的三个
})
12、登录页面跳转不成功:
始终进入密码错误而登录失败——变量名没有一一对应导致两个变量怎么对比都不相等
用户存在以及密码正确情况下,进入主页跳转失败,报错“ res.rediret is not a function”——res.rediret拼写错误,改为res.redirect(查错应从最基本的方法入手)
13、报错“error:$injector:unpr。。。”引入ionic.bundle.min.js文件导致相关页面无法显示正常,替换该文件,页面正常显示
14、某些问题可能和缓存有关,要几时清除缓存
15、如何给链接数据库的js文件传递id呢??
路由里面:Project.get(req, function (err, projects) //传输req
查询数据库的js里面:Project.get=function(req,callback)//接受req
16、package.json里面
"scripts": {
"start": "supervisor app.js"//配置这句代码,每次启动项目cmd执行这句代码
}
17、post数据没有提交
手动设置action指定提交到哪个页面;
<form method="post" action="/resetChangePsw">
18、数据库的数据没有修改
_id数据类型不对,是ObjectId不是字符串类型;
var ObjectID = require('mongodb').ObjectID;
collection.update({_id:ObjectID(account)},{$set:{a_password:newpsw}});
给页面传递过来的数据是字符串需要转化为指定的数据类型才能查询数据库。
19、图片上传组件:formidable,multer
发送邮件组件:nodemailer,emailjs
20、//存储各种时间格式,方便以后扩展
var time = {
date: date,
year : date.getFullYear(),
month : date.getFullYear() + "-" + (date.getMonth() + 1),
day : date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(),
minute : date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " +
date.getHours() + ":" + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes())
}
21、Uncaught SyntaxError: Invalid or unexpected token :代码书写错误,可能成对的符号缺少之一,如:"",'',(),{}。
22、mongodb模糊查询
db.test_info.find({"tname": {$regex: '测试', $options:'i'}}) ;
23、
查看test数据库里的所有集合: show collections;
db的帮助文档,输入:db.help();
表的帮助,格式:db.表名.help()
24、npm install --save modulename 下载模块组件并且更新package.json里面的dependencies
25、MongoDB导入和导出
一、MongoDB数据导入与导出
1、导出工具:mongoexport
(1)概念:
mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
(2)语法:
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
-o :输出的文件名
--type : 输出的格式,默认为json
-f :输出的字段,如果-type为csv,则需要加上-f "字段名"
(3)示例:
sudo mongoexport -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json -f "_id,user_id,user_name,age,status"
2、数据导入:mongoimport
(1)语法:
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
--type :导入的格式默认json
-f :导入的字段名
--headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
--file :要导入的文件
(2)示例:
sudo mongoimport -d mongotest -c users --file /home/mongodump/articles.json --type json
二、MongoDB备份与恢复
1、MongoDB数据库备份
1、语法:
mongodump -h dbhost -d dbname -o dbdirectory
参数说明:
-h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d: 需要备份的数据库实例,例如:test
-o: 备份的数据存放位置,例如:/home/mongodump/,当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据。
2、实例:
sudo rm -rf /home/momgodump/
sudo mkdir -p /home/momgodump
sudo mongodump -h 192.168.17.129:27017 -d itcast -o /home/mongodump/
-
2、MongoDB数据库恢复
1、语法:
mongorestore -h dbhost -d dbname --dir dbdirectory
参数或名:
-h: MongoDB所在服务器地址
-d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--dir: 备份数据所在位置,例如:/home/mongodump/itcast/
--drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!
2、实例:
mongorestore -h 192.168.17.129:27017 -d itcast_restore --dir /home/mongodump/itcast/