-
用戶的模式,名稱唯一查看全部
-
直接輸入grunt 命令就可以跑起項(xiàng)目查看全部
-
concurrent 配置項(xiàng)查看全部
-
nodemon查看全部
-
grunt.initConfig({})查看全部
-
grunt.option('force', true); 設(shè)置為TRUE,不會(huì)因?yàn)榫娑兄钩绦蜻\(yùn)行,最后 grunt.registerTask('default', ['concurrent']);查看全部
-
grunt-concurrent 插件是為慢任務(wù)服務(wù),less/sass/watch 等優(yōu)化構(gòu)建的時(shí)間查看全部
-
grunt-nodemon 插件是監(jiān)聽 app.js,當(dāng)發(fā)生改動(dòng)則自動(dòng)重啟app.js查看全部
-
npm install grunt-contrib-watch 這個(gè)插件功能是只要有文件增加修改刪除都會(huì)重新執(zhí)行里面注冊(cè)好的任務(wù)查看全部
-
安裝 grunt 和 grunt 的命令行接口 grunt-cli查看全部
-
在控制臺(tái)指定端口啟動(dòng)應(yīng)用程序:PORT=4000 node app.js查看全部
-
這里的delete加中間鍵的原因,一開始認(rèn)為沒必要,畢竟沒權(quán)限連/admin/list都進(jìn)不去 現(xiàn)在想想,加上去也好,畢竟進(jìn)去了可能同樣是管理員,管理員也分級(jí)別的。有些管理員就不能刪,只能看 又這樣想之后發(fā)現(xiàn)不對(duì)啊,那這樣的話又得改一些東西了,現(xiàn)在不用還是刪了吧,等再加功能而已,現(xiàn)在就不要那么冗余了查看全部
-
Movie.savePoster查看全部
-
/** * 用戶注冊(cè) * /user/signup => req.body.userid * /user/signup/:userid => req.params.userid * /user/signup/111?userid=222 => req.query.userid * */ app.post('/user/signup', (req, res) => { let _user = req.body.user; // let _user = req.param('user'); // 也可以拿到數(shù)據(jù) if (!_user) return; // 簡單判斷是否是空字符、實(shí)際中在前端實(shí)現(xiàn) if ('' === _user.name.trim()) return res.redirect('/'); let __user = new User(_user); // 注意點(diǎn)一、 實(shí)例化的變量要注意不能與其他變量名沖突 // 檢查用戶名是否沖突 User.findOne({name: _user.name}, (err, user) => { // 注意點(diǎn)二、 我這里敲錯(cuò),User 寫成了user,find改成findOne才能得到預(yù)期結(jié)果 if (err) console.log(err); if (user) { // 用戶名已注冊(cè) return res.redirect('/'); } else { // 用戶名未注冊(cè) __user.save((err, user) => { // 注意點(diǎn)三、 跟第一點(diǎn)是對(duì)應(yīng)的,我這里寫成了user跟User.findOne的回調(diào)函數(shù)參數(shù)沖突所以報(bào)錯(cuò),這里要使用User new之后的實(shí)例 if (err) console.log(err); res.redirect('/admin/userlist'); }) } }); });查看全部
-
callback方式獲取評(píng)論查看全部
舉報(bào)
0/150
提交
取消