你好,在我的项目中,我的目标是一个简单的task.just,从我的数据库中检索最新的10个条目。我在互联网上尝试了几乎所有的可能性。我甚至试图从mongo.exe运行这些命令,但是在这里无法得到任何result.need的帮助。
index.js
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);
});
});在上面的代码中,我也尝试过这样做我的查询
//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
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合作
发布于 2016-02-10 09:24:33
使用查询上的exec()方法在回调中返回结果:
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方法的查询
//gives me toarray is not a function error
messageprocesses.find({}, {limit: 30}).toArray(function(err, docs){})没有工作,因为在Mongoose中它不接受回调函数作为参数,只接受数值。
另一个查询
//brings 10 input but not the latest 10 inputs
messageproceses.find({}, {}, { _id: -1, limit : 10}没有带来所需的结果,因为您没有指定sort()选项。
好吧,至于这个
//empty find query is working but i need only 10 result
messageproceses.find({},function(err,docs){})您也没有在查询中指定sort()和limit()方法。
https://stackoverflow.com/questions/35310113
复制相似问题