【发布时间】:2014-01-18 10:42:13
【问题描述】:
我对 Node.js 和 MongoDB 非常陌生,正在尝试拼凑我自己的博客应用程序。我在尝试通过我的“博客”模型查询具有特定用户名的模型时遇到问题。当我尝试运行时:
var userBlogs = function(username) {
ub = Blog.find({author: username}).toArray();
ub = ub.reverse();
};
我收到一个错误:
TypeError: Object #<Query> has no method 'toArray'
我知道全局变量很糟糕,但我一直在努力让它发挥作用。 Mongo 文档声称返回的游标可以调用 toArray() 方法。我不知道为什么它不起作用。
这是我的架构/模型创建:
var blogSchema = mongoose.Schema({
title: {type:String, required: true},
author: String,
content: {type:String, required: true},
timestamp: String
});
var Blog = mongoose.model('Blog', blogSchema);
这里是 /login 和 /readblog 请求
app.get('/readblog', ensureAuthenticated, function(req, res) {
res.render('readblog', {user: req.user, blogs: ub})
})
app.get('/login', function(req, res){
res.render('login', { user: req.user, message: req.session.messages });
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login'}),
function(req, res) {
userBlogs(req.user.username);
res.redirect('/');
});
});
最终的结果应该是和这个翡翠一起工作的:
extends layout
block content
if blogs
for blog in blogs
h2= blog[title]
h4= blog[author]
p= blog[content]
h4= blog[timestamp]
a(href="/writeblog") Write a new blog
如何让查询输出数组,甚至作为对象工作?
【问题讨论】:
-
应该将“猫鼬”添加到您的标签中
标签: node.js mongodb mongoose pug passport.js