Promise没有方法“排序" [英] Promise has no method 'sort'

查看:75
本文介绍了Promise没有方法“排序"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Mongoose与Bluebird配合使用,并且在使用包含时间戳排序的查询时遇到错误.我正在尝试仅检索最新的条目.使用内置的Promises时,该查询有效.

I am using Mongoose with Bluebird and am hitting an Error when using a query that includes a sort on a time stamp. I am trying to retrieve only the most recent entry. The query works when using the built in Promises.

有什么想法吗?谢谢!

var Promise        = require("bluebird"),    
    mongoose       = require('mongoose');

var Item = Promise.promisifyAll(mongoose.model("Item"));
Promise.promisifyAll(Item.prototype);
var connect = function () {
    var options = { server: { socketOptions: { keepAlive: 1 } } };
    var mongoUrl = "mongodb://" + config.mongo.host + ":" + config.mongo.port + "/" + config.mongo.db;
  mongoose.connect(mongoUrl, options);
}; 
connect();

Item.findAsync({item_id: "03010200400000a0bf00210"}).sort({ts:-1}).limit(1);

Possibly unhandled TypeError: Object [object Promise] has no method 'sort'
    at Object.module.exports.process (/Source/updater2/checkAndUpdate.js:88:75)
    at /Source/tellme/updater2/test1.js:25:20
    at tryCatch1 (/Source/updater2/node_modules/bluebird/js/main/util.js:43:21)
    at Promise$_callHandler [as _callHandler] (/Source/updater2/node_modules/bluebird/js/main/promise.js:627:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/Source/updater2/node_modules/bluebird/js/main/promise.js:641:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (/Source/updater2/node_modules/bluebird/js/main/promise.js:804:14)
    at Promise$_settlePromises [as _settlePromises] (/Source/updater2/node_modules/bluebird/js/main/promise.js:938:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/Source/updater2/node_modules/bluebird/js/main/async.js:75:12)
    at Async$consumeFunctionBuffer (/Source/updater2/node_modules/bluebird/js/main/async.js:38:14)
    at process._tickCallback (node.js:419:13)
Mongoose:item.find({ item_id: '03010200400000a0bf00210' }) { fields: undefined }  

推荐答案

尝试一下

return Item.find({item_id: "03010200400000a0bf00210"}).sort({ts:-1}).limit(1).execAsync();

这篇关于Promise没有方法“排序"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆