制作簡易app個人總結


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_modules\mongodb\node_modules\bson\ext\index.js
在catch塊改變bson的js本版路徑:
bson = require('../build/Release/bson');
變成
bson = require('../browser_build/bson');
如果發現連文件夾browser_biuild都沒有的話(我的情況就是這樣),直接復制文件:
..node_modules\bson\build\Release\bson
from
..node_modules\bson\browser_build\bson

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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM