你好我的项目我瞄准一个简单的任务。我从我的数据库中检索最新的10个条目。我尝试了几乎所有的可能性在Internet.i甚至尝试从mongo.exe运行命令,但无法得到任何结果。你的帮助。
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);
如果您需要更多信息我可以提供合作
答案 0 :(得分:2)
在查询中使用 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){})