想要找到与当前相关的下一个和上一个对象。
这就是我的
this.props._id = currentId;
// Fetch current object data
data.video = Videos.findOne({_id: this.props._id});
// Using votes string from object above to find me objects
data.next = Videos.findOne({votes: {$gte: data.video.votes}});
data.previous = Videos.findOne({votes: {$lte: data.video.votes}};
我知道这是不正确的,它肯定会返回对象,但它不会是最近的对象,而且我也有可能返回当前对象。
我想做的是返回我的选择器是投票的下一个或上一个对象,我还想确保使用 Id 来排除当前对象,那么几个对象也很有可能具有相同的编号票数。
现在已经连续进行了 12 个小时,现在差不多回到了我开始的地方,所以非常感谢一些例子让我全神贯注,不确定我是否应该使用 find 或 findOne。
完整代码如下
VideoPage = React.createClass({
mixins: [ReactMeteorData],
getMeteorData() {
var selector = {};
var handle = Meteor.subscribe('videos', selector);
var data = {};
data.userId = Meteor.userId();
data.video = Videos.findOne({_id: this.props._id});
data.next = Videos.findOne({votes: {$gte: data.video.votes}});
data.previous = Videos.findOne({votes: {$lte: data.video.votes}};
console.log(data.video.votes);
console.log(data.video);
console.log(data.next);
console.log(data.previous);
return data;
},
getContent() {
return <div>
{this.data.video.votes}
<Youtube video={this.data.video} />
<LikeBox next={this.data.next._id} previous={this.data.previous._id} userId={this.data.userId} video={this.data.video} />
</div>
;
},
render() {
return <div>
{(this.data.video)? this.getContent() :
<Loading/>
}
</div>;
}
});
最佳答案
你需要:
- 排除当前id
- 按合适的方向排序
- 只选择一个结果
js:
data.video = Videos.findOne({ _id: currentId });
// object with next highest vote total
data.next = Videos.findOne({ _id: { $ne: currentId },
votes: { $gte: data.video.votes }},{ sort: { votes: 1 }});
// object with next lowest vote total
data.previous = Videos.findOne({ _id: { $ne: currentId },
votes: { $lte: data.video.votes },{ sort: { votes: -1 }});
关于javascript - MongoDB => findOne 或 find 查询下一个对象? ( meteor / react ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600277/