我是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('/');
});
});
最终结果应该与这个Jade一起使用:
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
如何获取查询以输出数组,甚至可以作为对象使用?
该toArray
函数存在于本Cursor
机MongoDB
NodeJS驱动程序的类(参考)上。find
MongooseJS中的方法返回一个Query
对象(reference)。您可以通过几种方式进行搜索并返回结果。
由于MongoDB的NodeJS驱动程序中没有同步调用,因此在所有情况下都需要使用异步模式。MongoDB的示例(通常在Java中使用MongoDB控制台使用JavaScript)暗示本机驱动程序也支持类似的功能,而事实并非如此。
var userBlogs = function(username, callback) {
Blog.find().where("author", username).
exec(function(err, blogs) {
// docs contains an array of MongooseJS Documents
// so you can return that...
// reverse does an in-place modification, so there's no reason
// to assign to something else ...
blogs.reverse();
callback(err, blogs);
});
};
然后,调用它:
userBlogs(req.user.username, function(err, blogs) {
if (err) {
/* panic! there was an error fetching the list of blogs */
return;
}
// do something with the blogs here ...
res.redirect('/');
});
您还可以对字段进行排序(例如,博客发布日期):
Blog.find().where("author", username).
sort("-postDate").exec(/* your callback function */);
上面的代码将基于名为postDate
(备用语法:的字段)降序排列sort({ postDate: -1})
。
本文向大家介绍toArray()方法有什么作用?,包括了toArray()方法有什么作用?的使用技巧和注意事项,需要的朋友参考一下 ArrayList类的toArray()方法以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。这充当了基于数组的API和基于集合的API之间的桥梁。 示例 输出结果
Creates an array from the key/value pairs in this sequence. Signature ObjectLikeSequence.toArray = function() { /*...*/ } ObjectLikeSequence.toArray = function toArray() { return this.pairs().toArra
Creates an array snapshot of a sequence. Note that for indefinite sequences, this method may raise an exception or (worse) cause the environment to hang. Signature Sequence.toArray = function() { /*..
问题内容: 我正在编写小型且非常干燥的框架,该框架高度依赖元数据。我想知道是否有一种方法来获取方法参数名称,即给定一些方法 得到的字符串和。 我知道我可以注释参数,但是那不是很好。 问题答案: 我们为包含参数名称的String[]的方法创建了一个自定义注释。与必须注释每个单独的参数相比,此方法感觉易于管理。我们计划添加构建时检查,以确保带注释的参数名称的数量与参数的数量匹配,因为这是我们所需要的。
问题内容: 我正在尝试将Set转换为Array。 而且效果很好。但是我不了解in 的意义。 我的意思是起初我正在尝试,但是没有用。为什么需要。 问题答案: 如果Set的元素足够大,则该数组将存储在其中。否则,将为此分配一个具有相同运行时类型的新数组。 Object [] toArray() ,返回不能转换为或任何其他类型数组的。 T [] toArray(T [] a) , 返回包含此集合中所有元
问题内容: 假设我需要生成变量以容纳用户的一些输入(我不知道它们有多少个)。如果不使用,(和其他类型的列表和地图),可我的代码生成(可以说)与像(名称变量X倍,,,等)?如果是,请提供示例代码。 问题答案: 以下是我实施并帮助我轻松解决我的解决方案的方法,没有太多障碍。 //创建数组列表 循环并使用索引将对象添加到arraylist中。 //借助索引在运行时检索对象