我正在开发NodeJS + Express + Mongoose + MongoDB项目。
此代码可以正常工作:
var findRecord = function(id) {
// find record by id
return User.findOne({
_id: id
}).then(function(record) {
// if record not found
if (!record) {
return Promise.reject(constant.NOT_FOUND);
} else {
// return found object
return Promise.resolve({
data: record,
status: constant.READ_SUCCESS
});
}
}, function() {
// if there is error reading record
return Promise.reject(constant.READ_ERROR);
});
};
不知道这个有什么问题:
var allRecords = function(skip, limit) {
// find all records
return User.find({}).limit(limit).skip(skip)
.then(function(records) {
console.log('executed');
// if records found
return Promise.resolve({
data: records,
status: constant.READ_SUCCESS,
});
}, function() {
return Promise.reject(constant.READ_ERROR);
});
};
执行永远不会在控制台上打印
即便是这个人也不能工作:
var allRecords = function(skip, limit) {
// find all records
return User.find({}).limit(limit).skip(skip)
.exec(function(records) {
console.log('executed');
// if records found
return Promise.resolve({
data: records,
status: constant.READ_SUCCESS,
});
}, function() {
return Promise.reject(constant.READ_ERROR);
});
};
答案 0 :(得分:1)
您需要运行stringSize
方法:
exec
除此之外,你不应该使用User.find({}).limit(limit).skip(skip).exec();
返回promise的结果,只返回一个对象。此外,最好使用Promise.resolve
回调,而不是catch
的第二次回调:
then