0

我的项目目标是制作一个类似于清单的 Web 应用程序,用户可以在其中查看数据库中的内容并更新其中的内容。

数据库很简单。只是列出最喜欢的东西。例如 {"favorite":"Pie"},{"favorite":"Kitty"}

到目前为止,我已经弄清楚如何连接到数据库(MongoHQ)并显示单个数据元素。我已经尝试了几个小时,但我被难住了:

  1. 获取 html 文件以写入数据库中的任何数据。
  2. 编写 Post 表单以写入数据库。

请分享一些见解!

这是我的代码。

.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <div>

  <h1>Notepad</h1>
  <p>Favorite things: {{favorite}}</p>
<!--  {% for favorite in doc %}                  <-this doesn't work!
  <p>Favorite things: {{favorite}}</p>
  {% endfor %}
-->  
  </div>
</body>

</html>

网页.js

var express = require('express');
var path = require('path');
var fs = require('fs');
var http = require('http');
var mongo = require('mongodb');
var MongoClient = mongo.MongoClient;
var Server = require('mongodb').Server;
var mongoUri = "mongodb://id:pass@ds------.mongolab.com:-----/heroku_app------";
var cons = require('consolidate');
var app = express(express.logger());

app.engine('html', cons.swig);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.set('port', process.env.Port || 8080);
app.use(express.bodyParser());

var mydatabase = null;
var myCollection = null;

MongoClient.connect(mongoUri, function(err, db){
    if(!err){
        console.log("We are connected to mongo_lab!");
    }
    mydatabase = db;
    mydatabase.createCollection('test2', function(err, collection){});

    myCollection = mydatabase.collection('favorites');
    //myCollection.insert({'favorite':'Blueberries'}, {w:1}, function(err, result){});
});

var mongoclient_server = new MongoClient(new Server('localhost', 27017));

function errorHandler(err, req, res, next){
    console.error(err.message);
    console.error(err.stack);
    res.status(500);
    res.send("Fix the dam Error!");
}
app.use(errorHandler);

app.get('/notepad', function(req, res, next){
    MongoClient.connect(mongoUri, function(err, db){
        mydatabase.collection("favorites").find().toArray(function(err, doc){
        if(err) throw err;
        console.log(doc);
            res.render('notepad', doc[0]);
        });
    });
});

var htmlfile = "index.html";
app.get('/', function(request, response) {
var html = fs.readFileSync(htmlfile).toString();
response.send(html);
});

var port = process.env.PORT || 8080;
app.listen(port, function() {
  console.log("Listening on " + port);
});
//mongoclient_server.open(function(err, mongoclient_server){   <--if I use this, heroku crashes
//    if(err) throw err;
//    app.listen(port);
//});
4

1 回答 1

0

您将数据从doc[0]本地人传递到您的notepad视图,所以基本上notepad本地人将是doc[0].

在您对 的调用中res.render(),您应该指定您的文档位于doc本地,如下所示:

res.render('notepad', {
  doc: doc
});

这样你{% for ... %}就可以了。

文档res.render

于 2014-02-12T10:41:25.313 回答