我正在使用express和sequelize处理我的第一个节点项目,我不了解页面渲染的工作原理
我的一个模特(续集)中有以下功能:
getGreetings: function (req, res) {
Greeting.findAll({
}).then(function (data) {
console.log('Returned data for greetings: ' + data);
res.send({greetings:data});
})
}
这是我的路线:
var Greeting = require('../models/greetings');
router.get('/', function(req, res) {
res.render('index', function(){
Greeting.getGreetings(req, res);
});
});
和我的ejs表我想在以下位置显示数据:
<tbody>
<% for(var i=0; i < greetings.length; i++) { %>
<tr>
<td><%= greetings[i].name %></td>
<td><%= greetings[i].message %></td>
</tr>
<% } %>
</tbody>
这不显示任何html,而是回显json数据。有人可以帮助解释为什么我的html表没有被填充吗?
答案 0 :(得分:1)
而是回应json数据。
这是因为getGreetings()
始终使用res.send()
将其设置为响应:
res.send({greetings:data});
要向您的视图提供greetings
,您必须在data
locals
内提供res.render('index', { greetings: data });
:
getGreetings
这两种方法互不配合。每个响应本身定义为res.render()
,因此每个响应只能使用一个。
如果您修改return
.findAll()
创建的承诺getGreetings: function (req) {
return Greeting.findAll({
// ...
});
}
:
res.send()
然后,路由处理程序可以绑定它并决定如何使用结果本身 - 是否应该使用res.render()
或var Greeting = require('../models/greetings');
router.get('/', function(req, res) {
Greeting.getGreetings(req).then(function (greetings) {
res.render('index', { greetings: greetings });
});
});
:
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
void getValue(int [], int);//function prototype
int main()
{
const int ARRAY_SIZE = 20;
int numbers[ARRAY_SIZE];
cout << fixed << showpoint << setprecision(1);
//get ints from user
getValue(numbers, ARRAY_SIZE);
//I added this FOR loop.
for (int i = 0; i < ARRAY_SIZE - 1; i++)
{
//I also added the [i] so that the number is outputted as well
if (numbers[i] % 2 == 0)
// if the integer when divided by 2 has no remainder then it's even.
// and here as well
cout << numbers[i] << " is even "
<< endl;
else
// the integer is odd
cout << numbers[i] << " is odd "
<< endl;
}
return 0;
}
void getValue(int numbers[], int ARRAY_SIZE)
{
//loop counter
int index;
//get each value
for (index = 0; index <= ARRAY_SIZE - 1; index++)
{
cout << "Enter an integer " << (index + 1) << " : ";
cin >> numbers[index];
}
}