首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取最后一个元素的MongoDB不能正确地使用node.js

获取最后一个元素的MongoDB不能正确地使用node.js
EN

Stack Overflow用户
提问于 2016-02-10 08:29:27
回答 1查看 211关注 0票数 3

你好,在我的项目中,我的目标是一个简单的task.just,从我的数据库中检索最新的10个条目。我在互联网上尝试了几乎所有的可能性。我甚至试图从mongo.exe运行这些命令,但是在这里无法得到任何result.need的帮助。

index.js

代码语言:javascript
运行
复制
var messageprocesses = require("./models/messages"); 

   app.get("/messagesreceived",function(req,res){

        var response = {};

        //returns nothing
        messageprocesses.find({}).sort({"_id":-1}).limit(1,function(err, data){

            if(err) {
                console.log(err);
                response = {"error" : true,"message" : "Error fetching data"};
            } else {
                console.log(data);
                response = {"error" : false,"message" : data};
            }
            res.json(response);
        });

    });

在上面的代码中,我也尝试过这样做我的查询

代码语言:javascript
运行
复制
//gives me toarray is not a function error
messageprocesses.find({}, {limit: 30}).toArray(function(err, docs){})

//brings 10 input but not the latest 10 inputs
messageproceses.find({}, {}, { _id: -1, limit : 10}

//empty find query is working but i need only 10 result
 messageproceses.find({},function(err,docs){})

messages.js

代码语言:javascript
运行
复制
var mongoose = require("mongoose");
mongoose.connect('mongodb://localhost:27017/mydatabase');

var mongoSchema =   mongoose.Schema;

var messages = {
    "chat_id" : String,
    "message" : String,
    "sender" : String,
    "receivers" : String
}
module.exports = mongoose.model('messages',messages);

如果你需要更多的信息,我可以provide.thanks合作

EN

Stack Overflow用户

回答已采纳

发布于 2016-02-10 09:24:33

使用查询上的exec()方法在回调中返回结果:

代码语言:javascript
运行
复制
var messageprocesses = require("./models/messages"); 
app.get("/messagesreceived",function(req,res){

    var response = {};

    messageprocesses.find({})
                    .sort({"_id":-1})
                    .limit(10)
                    .exec(function(err, data){

                        if(err) {
                            console.log(err);
                            response = {"error" : true,"message" : "Error fetching data"};
                        } else {
                            console.log(data);
                            response = {"error" : false,"message" : data};
                        }
                        res.json(response);
                    });

});

您尝试过的其他查询不起作用,因为您直接使用了mongo服务器方法,而Mongoose API方法包装它们的方式不同。例如,使用limit方法的查询

代码语言:javascript
运行
复制
//gives me toarray is not a function error
messageprocesses.find({}, {limit: 30}).toArray(function(err, docs){})

没有工作,因为在Mongoose中它不接受回调函数作为参数,只接受数值。

另一个查询

代码语言:javascript
运行
复制
//brings 10 input but not the latest 10 inputs
messageproceses.find({}, {}, { _id: -1, limit : 10}

没有带来所需的结果,因为您没有指定sort()选项。

好吧,至于这个

代码语言:javascript
运行
复制
//empty find query is working but i need only 10 result
messageproceses.find({},function(err,docs){})

您也没有在查询中指定sort()limit()方法。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35310113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档