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!

有帮助吗?

解决方案

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'})
            });
        });
    });
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top