Reputation: 121
I want to make a simple node blog, but I need some help!
I want to save my blog 'entries' or 'posts' to rethinkdb, but to do that I first need to know how to get my posts to show up on my blog, so I made a rethinkdb server, with some entries! this is what it looks like:
[
{
"body": "This is the standard hello world message!" ,
"id": "1" ,
"published": "2014-04-19" ,
"title": "Hello World!"
} ,
{
"body": "I tought dinner with my family would be horrific, but maybe my low expectations made it bearable" ,
"id": "3" ,
"published": "2014-04-19" ,
"title": "Dinner was ok!"
} ,
{
"body": "Here I am ranting about how easter is not as awesome it is said to be" ,
"id": "2" ,
"published": "2014-04-19" ,
"title": "Easter is hard work"
}
]
the database name is 'blogdb' and the table name is 'entries'
And this is my app.js (node.js server)
/**
* Module dependencies.
*/
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.bodyParser());
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', function(req, res) {
res.render('index',
{title: 'My Blog'}
)
});
app.get('/about', function(req, res) {
res.render('about',
{ title : 'About' }
)
})
app.get('/photos', function(req, res) {
res.render('photos',
{ title : 'Photos' }
)
})
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
And last, we have index.jade (the webpage)
extend layout
block content
p this is where I want my entreis to be!
footer
p
a(href='/') Home
| ~
a(href='/about') About Me
| ~
a(href='/photos') Some photos
I know it's not much, but I didn't feel like doing much design before I have my entries there!
What must I do to get all my entries from the rethinkdb server into my webpage?
all help is appreciated help!
Upvotes: 1
Views: 919
Reputation: 1485
I personally use sailsjs for node development, so I'm not knowledgeable on express specifically....but...
You need the rethinkdb adapter for starters...
var r = require('rethinkdb');
Then perhaps you could change your home page route to something like this...
app.get('/', function(req, res) {
r.connect({host: 'rethinkdb_server_ip', db: 'blogdb'}, function(err, conn){
r.table('entries').run(conn, function(err, cursor){
if (err) {
//Handle errors if you want.
}
cursor.toArray(function(entries){
res.render('index', {entries: entries, title: 'My Blog'})
});
});
});
});
Upvotes: 5