Esw*_*uri 1 ejs mongoose mongodb node.js
我是编程的新手。我的本地数据库中有一个名为“Practice”的集合,其中包含“名称、角色、组织”。我想弄清楚如何使用猫鼬在 .ejs 文件中打印此信息。
在我的 server.js 中,我有
require('./app/routes.js')(app, passport);
mongoose.connect(configDB.url); // connect to our database
var schema = mongoose.Schema;
mongoose.model('practice', new schema({ Name: String, Role: String, Org: String}),'practice');
var practice = mongoose.model('practice');
practice.find({}, function(err, data) { console.log(err, data); });
Run Code Online (Sandbox Code Playgroud)
在路线中,
app.get('/profileface', isLoggedIn, function(req, res) {
res.render('profileface.ejs', {
user : req.user
});
});
Run Code Online (Sandbox Code Playgroud)
在视图文件夹中的文件 profileface.ejs 中,我有以下内容可以打印我的“练习”集合中的名称。
<%= practice.name %>
Run Code Online (Sandbox Code Playgroud)
虽然它在控制台中打印,但当我尝试访问 profileface.ejs 时,出现以下错误。
ReferenceError: C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\views\profileface.ejs:36 34| </div> 35| >> 36| <%= practice.name %> 37| 38| <!-- <div class="text-center"> 39| <p>Assignment for 4ME302</p> practice is not defined at eval (eval at <anonymous> (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\ejs\lib\ejs.js:237:14), <anonymous>:30:986) at eval (eval at <anonymous> (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\ejs\lib\ejs.js:237:14), <anonymous>:30:1154) at C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\ejs\lib\ejs.js:250:15 at Object.exports.render (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\ejs\lib\ejs.js:288:13) at View.exports.renderFile [as engine] (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\ejs\lib\ejs.js:318:20) at View.render (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\view.js:76:8) at Function.app.render (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\application.js:504:10) at ServerResponse.res.render (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\response.js:798:7) at C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\app\routes.js:30:7 at callbacks (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\router\index.js:164:37) at isLoggedIn (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\app\routes.js:116:10) at callbacks (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\router\index.js:164:37) at param (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\router\index.js:138:11) at pass (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\router\index.js:145:5) at Router._dispatch (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\router\index.js:173:5) at Object.router (C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\node_modules\express\lib\router\index.js:33:10)
Run Code Online (Sandbox Code Playgroud)
过去 2 天我一直试图通过谷歌搜索来解决这个问题,但现在我放弃了。如果您能帮助我,我将不胜感激。
额外在编程中,您希望保持代码井井有条。
在app文件夹中创建一个文件,例如PracticeModel.js并将您的架构逻辑移到那里
var PracticeSchema = new mongoose.Schema({
Name: String,
Role: String,
Org: String
});
module.exports = mongoose.model('practice', PracticeSchema, 'practice');
Run Code Online (Sandbox Code Playgroud)
在你的routes.js 中,在顶部包含新创建的文件
var PracticeModel = require('./PracticeModel.js');
Run Code Online (Sandbox Code Playgroud)
您的问题您需要(1)在路由处理程序中移动查询并(2)将结果集传递data给视图
app.get('/profileface', isLoggedIn, function(req, res) {
// mongoose operations are asynchronous, so you need to wait
PracticeModel.find({}, function(err, data) {
// note that data is an array of objects, not a single object!
res.render('profileface.ejs', {
user : req.user,
practices: data
});
});
});
Run Code Online (Sandbox Code Playgroud)
在您的视图profileface.ejs 中,您需要遍历传递的实践数组
<% practices.forEach(function (practice) { %>
<%= practice.Name %> <!-- note you defined the field as Name not name -->
<% }) %>
Run Code Online (Sandbox Code Playgroud)
更改后,您的server.js将如下所示
mongoose.connect(configDB.url);
require('./app/routes.js')(app, passport);
Run Code Online (Sandbox Code Playgroud)
阅读这篇关于同步与异步的文章。您在 Node.js 中所做的大多数事情通常是异步的。
| 归档时间: |
|
| 查看次数: |
6260 次 |
| 最近记录: |