国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - nodejs在一個(gè)頁(yè)面下顯示mongodb數(shù)據(jù)庫(kù)里的內(nèi)容,頁(yè)面出現(xiàn)is not defined錯(cuò)誤,是哪里出了問(wèn)題?

瀏覽:126日期:2023-09-30 13:28:00

問(wèn)題描述

想在一個(gè)頁(yè)面顯示房間信息,于是照著一個(gè)curd的demo來(lái)寫(xiě)自己的項(xiàng)目,但是打開(kāi)后出現(xiàn)如下錯(cuò)誤:

ReferenceError: E:codekkSecretChat-masterviewsroomview.html:51 49| </thead> 50| <tbody> >> 51| <% rooms.forEach(function( room ){ %> 52| <tr> 53| <td><%=room._id%></td> 54| <td><%= room.roomName %></td>rooms is not defined at eval (eval at compile (E:codekkSecretChat-masternode_modulesejslibejs.js:524:12), <anonymous>:14:8) at returnedFn (E:codekkSecretChat-masternode_modulesejslibejs.js:555:17) at tryHandleCache (E:codekkSecretChat-masternode_modulesejslibejs.js:203:34) at View.exports.renderFile [as engine] (E:codekkSecretChat-masternode_modulesejslibejs.js:412:10) at View.render (E:codekkSecretChat-masternode_modulesexpresslibview.js:128:8) at tryRender (E:codekkSecretChat-masternode_modulesexpresslibapplication.js:640:10) at EventEmitter.render (E:codekkSecretChat-masternode_modulesexpresslibapplication.js:592:3) at ServerResponse.render (E:codekkSecretChat-masternode_modulesexpresslibresponse.js:966:7) at E:codekkSecretChat-masterroutesroomview.js:19:9 at Layer.handle [as handle_request] (E:codekkSecretChat-masternode_modulesexpresslibrouterlayer.js:95:5) at next (E:codekkSecretChat-masternode_modulesexpresslibrouterroute.js:137:13) at Route.dispatch (E:codekkSecretChat-masternode_modulesexpresslibrouterroute.js:112:3) at Layer.handle [as handle_request] (E:codekkSecretChat-masternode_modulesexpresslibrouterlayer.js:95:5) at E:codekkSecretChat-masternode_modulesexpresslibrouterindex.js:281:22 at Function.process_params (E:codekkSecretChat-masternode_modulesexpresslibrouterindex.js:335:12) at next (E:codekkSecretChat-masternode_modulesexpresslibrouterindex.js:275:10)

roomview.html部分代碼:

<h1>房間列表</h1><table> <thead> <tr><th>id</th><th>roomName</th><th>roomContent</th><th>roomCreateUser</th><th>roomImg</th><th>roomCreateDate</th><th>roomJoinPeos</th><th>roomChat</th> </tr> </thead> <tbody> <% rooms.forEach(function( room ){ %> <tr><td><%= room._id%></td><td><%= room.roomName %></td><td><%= room.roomContent %></td><td><%= room.roomCreateUser %></td><td><%= room.roomImg %></td><td><%= room.roomCreateDate %></td><td><%= room.roomJoinPeos %></td><td><%= room.roomImg %></td><td><a href='http://www.cgvv.com.cn/wenda/del.html?id=<%=room._id%>'>刪除房間</a> | <a href='http://www.cgvv.com.cn/wenda/modifyroom.html?id=<%=demo._id%>'>更新房間信息</a></td> </tr> <% }); %> </tbody>

路由roomview.js代碼:

var fs = require(’fs’);var formidable = require(’formidable’);var util = require(’util’);var express = require(’express’);var multer = require(’multer’);var roommodal = require(’../src/db/models/room’);var user=require(’../src/db/models/user’);var adminuser=require(’../src/db/models/adminuser’);var upload = multer({ dest: ’uploads/’ });var result = require(’../src/utils/result’);var router = express.Router();router.get(’/roomview’,function(req,res,next){ if(req.session.userid){return next(); } res.redirect(’/adminlogin’);});router.get(’/’,function(req,res,next){ res.render(’roomview.html’,{userid:req.session.userid});});var Room=roommodal.Room;exports.roomview = function(req, res,next){ Room.find(function(err,docs){res.render(’roomview’, { rooms:docs}); });};module.exports = router;

模型room.js部分代碼:

var mongoose = require(’mongoose’);var Schema = mongoose.Schema;var roomSchema = new Schema({ roomName:String, roomContent:String, roomCreateDate:Date, roomImg:String, roomCreateUser:String, roomJoinPeos:Number, roomChat:String});var room = mongoose.model(’Room’,roomSchema);module.exports = room;

server.js部分代碼:

var express = require(’express’);var path = require(’path’);var bodyParser = require(’body-parser’);var session = require(’express-session’);var loginRouter = require(’./routes/login’);var logoutRouter = require(’./routes/logout’);var indexRouter = require(’./routes/index’);var roomviewRouter = require(’./routes/roomview’);var registerRouter = require(’./routes/register’);var adminloginRouter = require(’./routes/adminlogin’);var adminregisterRouter = require(’./routes/adminregister’);var app = express();app.set(’PORT’,3000);var server = app.listen(app.get(’PORT’),function(err){ if(err){ console.error(’server error:%s’,err && ess.message); return; } console.log(’server listening at :::’,app.get(’PORT’));});app.use(session({ secret:’recommand 128 bytes random string’, cookie:{maxAge:60*1000*1000}}));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extened:true}));app.use(’/public’,express.static(path.join(__dirname,’/public’)));app.use(’/uploads’,express.static(path.join(__dirname,’/uploads’)));var ejs = require(’ejs’);app.engine(’html’,ejs.__express);app.set(’view engine’, ’html’);app.use(’/login’,loginRouter);app.use(’/adminlogin’,adminloginRouter);app.use(’/’,indexRouter);app.use(’/roomview’,roomviewRouter);app.use(’/register’,registerRouter);app.use(’/adminregister’,adminregisterRouter);app.get(’/room/users/:roomId’,function(req,res,next){ res.json(rooms[req.params.roomId]);});app.get(’/adminlogout’,function(req,res,next){ if(req.session.userid){var user = req.session.userid;delete req.session.userid; } res.redirect(’/adminlogin’);});

我猜測(cè)是在roomview.js這個(gè)路由出了問(wèn)題而不是server.js,然后模型room.js是不能改的,所以應(yīng)該只能改roomview.js,請(qǐng)問(wèn)各位大神,怎么改呢?

問(wèn)題解答

回答1:?jiǎn)栴}

server.js部分代碼掛載太多app.use(),根本用不著。

路由roomview.js代碼都不符合語(yǔ)法。 exports.roomview 是從哪里學(xué)到的?還能搭配 module.exports 使用?把 exports.roomview 改寫(xiě)成 router.get()模式。以下代碼不符合語(yǔ)法。

exports.roomview = function(req, res,next){ Room.find(function(err,docs){res.render(’roomview’, { rooms:docs}); });};

你給出頁(yè)面錯(cuò)誤信息,也給出你打開(kāi)的頁(yè)面鏈接呀。要不我怎么知道是打開(kāi)/roomview出錯(cuò)?還是打開(kāi)/roomview/123還是打開(kāi)/roomview/roomview出錯(cuò)?

解決

根據(jù)錯(cuò)誤信息,你是想打開(kāi)/roomview頁(yè)面,你的 路由 roomview.js 的 exports.roomview 根本就沒(méi)有走到。走的是路由 roomview.js 的 route.get(’/’, callback),這個(gè) callback 沒(méi)有設(shè)置 rooms, 所以報(bào)錯(cuò),把 exports.roomview 引入 callback。大致如下。

router.get(’/’, function(req,res,next){ Room.find(function(err,docs){res.render(’roomview’, { userid: req.session.userid, rooms:docs}); });});

soonfy

回答2:

你在控制臺(tái) 把你render 到頁(yè)面的 rooms 數(shù)據(jù)打出來(lái),看有木有,我怎么感覺(jué) 你寫(xiě)錯(cuò)了。 你在room.js里面 暴露出去了 room;然后 你在roomview.js路由方法怎么寫(xiě)var Room=roommodal.Room; 直接 roommodal.find 就好了,后面的 Room 是啥!!!

標(biāo)簽: JavaScript
主站蜘蛛池模板: 中文字幕成人 | 久草视频在 | 91精品国产9l久久久久 | 国产一区二区在线看 | 国产亚洲欧美日韩在线观看一区二区 | 福利视频专区 | 国产一区二区免费在线观看 | 国产成人ay手机在线观看 | 精品欧美一区视频在线观看 | 免费乱人伦 | 免费特黄一级欧美大片在线看 | 久久毛片网站 | 色综合a怡红院怡红院首页 色综合精品久久久久久久 色综合九九 | 美女视频永久黄网站免费观看国产 | 亚洲欧美精品中字久久99 | 中文精品久久久久国产不卡 | 国产a∨一区二区三区香蕉小说 | 国产男女爽爽爽爽爽免费视频 | 国产精品三级a三级三级午夜 | 免费看一区二区三区 | 97超频国产在线公开免费视频 | 成在线人视频免费视频 | 欧美a一| 国产精品三级 | 国产二区三区毛片 | 美国一级免费毛片 | 天天躁天天碰天天看 | 日本免费的一级绿象 | 精品久久香蕉国产线看观看亚洲 | 国产成人a视频在线观看 | 中文字幕日韩欧美一区二区三区 | 亚洲一区在线播放 | 免费播放国产性色生活片 | 亚洲韩国日本欧美一区二区三区 | 亚洲天堂一区二区在线观看 | 欧美综合图片一区二区三区 | a级毛片在线观看 | 国产精品反差婊在线观看 | 99热久久免费精品首页 | 在线免费观看日本视频 | 国产乱码一区二区三区四 |