使用node,express,mongodb,ionic,ejs搭建的簡單app我的總結


一、每次修改app.js或者其餘路由js文件,都必須重啓node app.js,不然修改不起做用!!!javascript

二、<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'css

三、ejs 的標籤系統很是簡單,它只有如下三種標籤:
<% code %>:JavaScript 代碼。
<%= code %>:顯示替換過 HTML 特殊字符的內容。
<%- code %>:顯示原始 HTML 內容。html

四、req.body : 就是 POST 請求信息解析事後的對象,例如咱們要訪問 POST 來的表單內的 name="password" 域的值,只需訪問req.body['password'] 或 req.body.password 便可。java

五、res.redirect : 重定向功能,實現了頁面的跳轉,更多關於 res.redirect 的信息請查閱: http://expressjs.com/api.html#res.redirect 。node

六、User :在前面的代碼中,咱們直接使用了 User 對象。User 是一個描述數據的對象,即 MVC 架構中的模型。前面咱們使用了許多視圖和控制器,這是第一次接觸到模型。與視圖和控制器不一樣,模型是真正與數據打交道的工具,沒有模型,網站就只是一個外殼,不能發揮真實的做用,所以它是框架中最根本的部分。python

七、解決警告
「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
})
}));jquery

八、解決報錯
「{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version 」c++

找到 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\bsonmongodb

九、報錯:「req.flash() requires sessions」「req.flash is not a function」"error setting ttl index on collection : sessions"出現各類未知錯誤,可嘗試把相關依賴更新到最新版本數據庫

十、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"

十一、報錯:「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'//使用這個使用前面的三個
})

十二、登陸頁面跳轉不成功:
始終進入密碼錯誤而登陸失敗——變量名沒有一一對應致使兩個變量怎麼對比都不相等
用戶存在以及密碼正確狀況下,進入主頁跳轉失敗,報錯「 res.rediret is not a function」——res.rediret拼寫錯誤,改成res.redirect(查錯應從最基本的方法入手)

1三、報錯「error:$injector:unpr。。。」引入ionic.bundle.min.js文件致使相關頁面沒法顯示正常,替換該文件,頁面正常顯示

1四、某些問題可能和緩存有關,要幾時清除緩存

1五、如何給連接數據庫的js文件傳遞id呢??
路由裏面:Project.get(req, function (err, projects) //傳輸req
查詢數據庫的js裏面:Project.get=function(req,callback)//接受req

1六、package.json裏面
"scripts": {
"start": "supervisor app.js"//配置這句代碼,每次啓動項目cmd執行這句代碼
}

1七、post數據沒有提交
手動設置action指定提交到哪一個頁面;
<form method="post" action="/resetChangePsw">

1八、數據庫的數據沒有修改
_id數據類型不對,是ObjectId不是字符串類型;
var ObjectID = require('mongodb').ObjectID;
collection.update({_id:ObjectID(account)},{$set:{a_password:newpsw}});
給頁面傳遞過來的數據是字符串須要轉化爲指定的數據類型才能查詢數據庫。

1九、圖片上傳組件: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())
}

2一、Uncaught SyntaxError: Invalid or unexpected token :代碼書寫錯誤,可能成對的符號缺乏之一,如:"",'',(),{}。

2二、mongodb模糊查詢
db.test_info.find({"tname": {$regex: '測試', $options:'i'}}) ;

2三、
查看test數據庫裏的全部集合: show collections;
db的幫助文檔,輸入:db.help();
表的幫助,格式:db.表名.help()

2四、npm install --save modulename 下載模塊組件而且更新package.json裏面的dependencies

2五、MongoDB導入和導出1、MongoDB數據導入與導出一、導出工具: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" 二、數據導入: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 json2、MongoDB備份與恢復一、MongoDB數據庫備份 一、語法: mongodump -h dbhost -d dbname -o dbdirectory 參數說明: -h: MongDB所在服務器地址,例如:127.0.0.1,固然也能夠指定端口號:127.0.0.1:27017 -d: 須要備份的數據庫實例,例如:test -o: 備份的數據存放位置,例如:/home/mongodump/,固然該目錄須要提早創建,這個目錄裏面存放該數據庫實例的備份數據。 二、實例: sudo rm -rf /home/momgodump/ sudo mkdir -p /home/momgodump sudo mongodump -h 192.168.17.129:27017 -d itcast -o /home/mongodump/ -二、MongoDB數據庫恢復 一、語法: mongorestore -h dbhost -d dbname --dir dbdirectory 參數或名: -h: MongoDB所在服務器地址 -d: 須要恢復的數據庫實例,例如:test,固然這個名稱也能夠和備份時候的不同,好比test2 --dir: 備份數據所在位置,例如:/home/mongodump/itcast/ --drop: 恢復的時候,先刪除當前數據,而後恢復備份的數據。就是說,恢復後,備份後添加修改的數據都會被刪除,慎用! 二、實例: mongorestore -h 192.168.17.129:27017 -d itcast_restore --dir /home/mongodump/itcast/

相關文章
相關標籤/搜索