Я использую Nodejs Expressjs MongoDB и Mongoose для создания API-интерфейса для небольшого сервис-приложения, над которым я работаю.Модель Mongoose, применяющая несколько функций к объекту модели
Я сделал все маршруты, применяющим одиночные прямые функции, такие как .find() .findOneAndUpdate() и т.д. , как это:
router.get('/testTable', function(req, res, next) {
TestModel.find(function (err, testTableEntries) {
if (err) return next(err);
res.send(testTableEntries);
});
});
Довольно просто. Но, что, если я хочу, чтобы включить больше функций, то только одну функцию, Монго .find()
Что делать, если я хочу:
.find().pretty()
Или, если хотите, чтобы агрегировать, сделать некоторые отсчеты:
.find().count()
.find({"fieldName": "How many have this value?"}).count()
.find({"fieldName": "How many have this value?"}).count().pretty()
Я пытался что-то вроде:
router.get('/testTable', function(req, res, next) {
TestModel.find(function (err, testTableEntries) {
if (err) return next(err);
res.send(testTableEntries);
}).count();
});
Или, может быть, вы можете посоветовать callbackless решение с обещанием (л икэ Bluebird), моя первая мысль:
router.get('/testTable', function(req, res, next) {
TestModel.find(function (err, next) {
if (err) return next(err);
}).then(function (req, res, next) {
res.send(testTableEntries);
}).catch(function (err, next) {
if (err) return next(err);
});
});
Может быть, есть некоторые Mongoose встроенных функций, которые могут решить эту проблему, я буду благодарен, но также будет полезно знать, как вызвать функции в цепочке один за другой - по моделям Mongoose.
Я благодарен заранее за любые советы и мысли!
Спасибо, что сработало абсолютно нормально! Конечный код был с router.get ('/ testTable /: someFiledId', function (req, res) {Model.count ({"someFieldId": req.params.someFieldId}). Exec (function (err, count) {var jsoncount = {"count": count}; if (err) return err; res.send (jsoncount);});}); – JavaJedi