我有一个名为“general_roasts”的集合,我正在尝试获取随机文档并将其返回。这是db.general_roasts.find()的输出:
meteor:PRIMARY> db.general_roasts.find()
{ "_id" : ObjectId("594b389caad4dc3ae16c5f09"), "text" : "roast 11", "contributor" : "" }
{ "_id" : ObjectId("594b38a1aad4dc3ae16c5f0a"), "text" : "roast 12", "contributor" : "" }
{ "_id" : ObjectId("594b38a5aad4dc3ae16c5f0b"), "text" : "roast 13", "contributor" : "" }
{ "_id" : ObjectId("594b38a7aad4dc3ae16c5f0c"), "text" : "roast 14", "contributor" : "" }
{ "_id" : ObjectId("594b38aaaad4dc3ae16c5f0d"), "text" : "roast 15", "contributor" : "" }
以下是代码:
import { Mongo } from 'meteor/mongo';
import { Meteor } from 'meteor/meteor';
const Categories = new Mongo.Collection('categories');
const GeneralRoasts = new Mongo.Collection('general_roasts');
console.log("GENERAL ROASTS: " + GeneralRoasts.find().fetch());
Meteor.methods({
'Roasts.random': ({category}) => {
console.log("received random roast request: " + category);
if (category == 'general')
{
let count = GeneralRoasts.find().count();
let index = Math.floor(Math.random() * count);
console.log("count: " + count + " index: " + index);
//var roast = GeneralRoasts.find({skip: index}).fetch();
var roast = GeneralRoasts.find({}, {skip: index, limit: 1});
console.log("returning roast: " + roast.text);
return roast;
}
}
});
Meteor.publish('general_roasts', ()=> {
console.log("published");
return GeneralRoasts.find();
});
Meteor.publish('categories', () => {
return Categories.find();
});
export default GeneralRoasts;
“Roasts.random”的记录输出为:
received random roast request: general
I20170621-22:02:32.059(-7)? count: 5 index: 4
I20170621-22:02:32.060(-7)? returning roast: undefined
有人知道为什么应该返回“烤14”时返回null吗?
提前致谢!
答案 0 :(得分:0)
正如Neil Lunn所说,你应该接受15' roast 15'而不是烤14'。
{skip:0,限制:1}是'烤11',所以{skip:4,limit:1}将是' roast 15'
你得到了未定义,因为你没有取得它。
更改
var roast = GeneralRoasts.find({}, {skip: index, limit: 1});
到
var roast = GeneralRoasts.find({}, {skip: index, limit: 1}).fetch();
答案 1 :(得分:0)
事实证明find()只返回一个游标,所以我不得不使用GeneralRoasts.find({},{skip:index,limit:1})。fetch();
这解决了我的问题!