我正在尝试使用Mongoose在MongoDB中实现“范围查询”,按“条件”排序,然后按“_id”排序。 我想向客户端返回一个包含两个游标的字符串。
我试图使用注释块2来实现类似下面的代码。但是,我收到了一个错误。甚至没有打印日志消息。
在我的测试中,查询为空,因为集合为空。 我怀疑我没有得到光标,所以我用“块1”而不是块2进行了测试,并且它有效。 但是因为我需要最后一个光标,我想我真正需要使用的是.toArray方法,对吗?
我做错了什么?
Feed.find({
"criteria": {$lt: cursorCriteria},
"_id": {$lt: cursorId}
})
.sort({
criteria: -1,
_id: -1
})
.limit( 50 )
// block 1: just to test if I'm getting the cursor
.then( items => {
items.forEach( function(item) {
console.log('an item');
})
})
/* block 2: if I try this block instead of block 1, I get an error
.toArray( items => {
if (items.length > 0) {
console.log('not empty);
} else {
console.log('empty');
}
var nextCursor = '${item.criteria}_${item._id}';
res.status(200).json({item, nextCursor});
})
*/
答案 0 :(得分:0)
Mongoose没有toArray()方法 这很好用:
.then( items => {
if (items.length > 0) {
console.log('not empty');
} else {
console.log('empty');
}
var nextCursor;
if (items.length > 0) {
nextCursor = '' + items[items.length-1].criteria + "_" + items[items.length-1]._id;
} else {
nextCursor = '';
}
res.status(200).json({items, nextCursor});
})