Node.js 需要帮助与Heroku&;一起使用MongoDB吗;节点,快车

Node.js 需要帮助与Heroku&;一起使用MongoDB吗;节点,快车,node.js,mongodb,heroku,express,swig-template,Node.js,Mongodb,Heroku,Express,Swig Template,我的项目目标是制作一个类似清单的web应用程序,用户可以在其中查看数据库中的内容并更新其中的内容 数据库很简单。只是列出最喜欢的东西。例如{“最爱”:“派”},{“最爱”:“基蒂”} 到目前为止,我已经知道如何连接到数据库(MongoHQ)并显示单个数据元素。我已经试了好几个小时了,但是我被难住了: 让html文件写入数据库中的任何数据 写入Post表单以写入数据库 请分享一些见解 这是我的密码 .html <!DOCTYPE html> <html> <head&

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

数据库很简单。只是列出最喜欢的东西。例如{“最爱”:“派”},{“最爱”:“基蒂”}

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

  • 让html文件写入数据库中的任何数据
  • 写入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>
    
    
    便条簿
    最喜欢的东西:{{Favorite}

    web.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);
    //});
    
    var express=require('express');
    var path=require('path');
    var fs=需要('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_应用程序----“;
    var cons=要求(“合并”);
    var app=express(express.logger());
    app.engine('html',cons.swig);
    app.set('view engine','html');
    app.set('views','u dirname+'/views');
    应用程序集('port',process.env.port | | 8080);
    app.use(express.bodyParser());
    var mydatabase=null;
    var myCollection=null;
    MongoClient.connect(mongoUri,函数(err,db){
    如果(!err){
    log(“我们已连接到mongo_实验室!”);
    }
    mydatabase=db;
    createCollection('test2',函数(err,collection){});
    myCollection=mydatabase.collection('favorites');
    //insert({'favorite':'Blueberries'},{w:1},函数(err,result){});
    });
    var mongoclient_server=new mongoclient(新服务器('localhost',27017));
    函数errorHandler(err、req、res、next){
    控制台错误(错误消息);
    控制台错误(错误堆栈);
    物质状态(500);
    res.send(“修复dam错误!”);
    }
    应用程序使用(errorHandler);
    app.get('/notepad',函数(req,res,next){
    MongoClient.connect(mongoUri,函数(err,db){
    mydatabase.collection(“收藏夹”).find().toArray(函数(err,doc){
    如果(错误)抛出错误;
    控制台日志(doc);
    res.render('notepad',doc[0]);
    });
    });
    });
    var htmlfile=“index.html”;
    app.get('/',函数(请求,响应){
    var html=fs.readFileSync(htmlfile.toString();
    response.send(html);
    });
    var port=process.env.port | | 8080;
    app.listen(端口,函数(){
    console.log(“监听”+端口);
    });
    
    //mongoclient_server.open(函数(err,mongoclient_server){您将数据从
    doc[0]
    作为局部变量传递到
    notepad
    视图,因此基本上
    notepad
    局部变量就是
    doc[0]
    中的内容

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

    res.render('notepad', {
      doc: doc
    });
    
    这样您的
    {%for…%}
    就可以工作了


    你能发布文档的完整结构吗?你的逻辑似乎是针对这样的东西:
    doc=['favorite1'、'favorite2'、…]
    我现在只有一个虚拟数据,其中有一个键值对{“favorite”:“blueberry”}。我正在尝试制作记事本,以便您可以向列表中添加更多喜爱的内容。我想我应该将文档扩展为{“favorite”:[“blueberry”,“apple”,kitten”]}?是的,然后在模板中您需要引用该数组属性,如:
    {doc.favorite%]中的favorite
    我认为关键在于nunjucks语法:
    {%forfavorite in doc%}
    相当于
    for(doc.favorite中的var项){
    普通javascript。您需要的是
    {%forfavorite in doc.favorite%}
    这是
    for(doc.favorite中的var项){