javascript - 无法使用带有express的mongodb调用未定义的方法 'get'

标签 javascript node.js mongodb express pug

我按照教程进行操作,但不知道出了什么问题。我的cmd根本没有错误。当我打开 localhost:3000 时,我看到此错误无法调用未定义的方法“get”,并且无法在我的帖子集合中加载帖子。

var express = require('express');
var router = express.Router();
var mongo = require('mongodb');
var db = require('monk')('localhost/nodeblog');

/* Homepage blog posts */
router.get('/', function(req, res, next) {
  var db = req.db;
  var posts = db.get('posts');
  console.log(posts)
  posts.find({},{},function(err,posts){
    res.render('index',{
        "posts":posts
    });
  });
});

我的 Jade

block content
    if posts
        each post, i in posts
            h1=post.title

最佳答案

有问题, 您需要首先将 db 附加到 req 对象,然后使用它。将此功能放在所有路线之前。

app.use(function(req, res, next) {
  // open connection
  req.db = db;
  next();
});

then use it in route.

var dbs = req.db;

否则很简单,删除此行并运行您的应用程序。

var db = req.db;

完整代码

var express = require('express');
var mongo = require('mongodb');
var db = require('monk')('localhost/nodeblog');

var app = express();

app.use(function(req, res, next) {
  req.db = db;
  next();
});

app.get('/', function(req, res, next) {
  var dbPost = req.db;
  var posts = dbPost.get('posts');
  console.log(posts)
  posts.find({},{},function(err, posts){
    res.render('index',{
        posts: posts
    });
  });
});

app.listen(3000);

关于javascript - 无法使用带有express的mongodb调用未定义的方法 'get',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33328456/

相关文章:

javascript - 如何将此 jquery 代码转换为 "raw"javascript

javascript - 什么是事件发射器调用?

javascript - 如何在向表 : jquery 添加行之前添加条件

javascript - Node : Executing async functions on mocha startup

windows - 如何在 Windows 中连接到 MongoDB?

javascript - 聚合两个数组,其中两个元素在 MongoDB 中都不为空

javascript - 如何从php中的数据库完整路径名中获取每个用户的图像

javascript - 类型错误 : Cannot read property 'setZoomLevelLimits' of undefined

ruby-on-rails - Rails 3 和 Mongoid : Embedded documents validation

node.js - 抛出新错误(this.name + '.' + Utils.lowercaseFirst(Type.toString())