получить записи из rethinkdb в блог node.js

Я хочу создать простой нод-блог, но мне нужна помощь!

Я хочу сохранить «записи» или «сообщения» своего блога в rethinkdb, но для этого мне сначала нужно знать, как заставить мои сообщения отображаться в моем блоге, поэтому я создал сервер rethinkdb с некоторыми записями! вот как это выглядит:

[

    {
        "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" 
    } 

] 

имя базы данных — «blogdb», а имя таблицы — «записи».

А это мой app.js (сервер node.js)

/**
 * 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'));
});

И наконец, у нас есть index.jade (веб-страница)

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

Я знаю, что это немного, но мне не хотелось заниматься дизайном до того, как я размещу там свои записи!

Что я должен сделать, чтобы все мои записи с сервера rethinkdb попали на мою веб-страницу?

любая помощь приветствуется!


person user3486059    schedule 19.04.2014    source источник


Ответы (1)


Я лично использую паруса для разработки узлов, поэтому я не разбираюсь конкретно в экспрессе.... но...

Для начала вам нужен адаптер rethinkdb...

var r = require('rethinkdb');

Тогда, возможно, вы могли бы изменить маршрут своей домашней страницы на что-то вроде этого...

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'})
            });
        });
    });
});
person InternalFX    schedule 19.04.2014
comment
Выглядит хорошо, я попробую, как только смогу, а потом вернусь, чтобы поблагодарить вас! - person user3486059; 20.04.2014
comment
r.table('entries') вернет курсор, поэтому вам нужно добавить `cursor.toArray(function(entries) { res.send(JSON.stringify(entries)) }) И не забудьте закрыть соединение, если вы его не используете после того :-) - person neumino; 20.04.2014
comment
Так это заменяет домашнюю страницу? как сделать этот массив видимым? во всяком случае, я получаю эту ошибку: «RqlDriverError: первый аргумент для« запуска »должен быть открытым соединением», но, как я понимаю, соединение открыто, и все в порядке.. - person user3486059; 20.04.2014
comment
вы заменили {host: 'rethinkdb_server_ip', db: 'blogdb'} на правильные настройки? - person InternalFX; 20.04.2014
comment
да, я сделал, я думаю, что он может подключиться, потому что, если я напишу там ложный ip, он скажет, что он не может подключиться, я пытался найти его в Интернете, но, кажется, ничего не нашел - person user3486059; 20.04.2014
comment
Я сожалею, это было мое плохое! У меня была неправильная версия моего node.js! Ваш ответ принят :) - person user3486059; 21.04.2014