mongoose发现所有没有发送回调

时间:2018-04-13 20:33:25

标签: node.js mongodb express mongoose

新的猫鼬,我发现Modal.find()有点麻烦。

我有一个expressjs api端点/最新/所有应该返回我的mongodb中的所有产品。

// Get latest listings
  router.get('/latest/all', function (req, res, next) {
  var json = Product.getAllProductListings();

  res.send(json);
});

以下是product.js模式。

   'use strict';

var mongoose = require('mongoose');


// Product Schema
var ProductSchema = mongoose.Schema({
    category: {
        type: String,
        index: true
    },
    name: {
        type: String
    },
    state: {
        type: String
    },
    target: {
        type: String
    }
});

var Product = module.exports = mongoose.model('Product', ProductSchema);

//Add new product request
module.exports.createProductReq = function (newProdReq, callback) {

    newProdReq.save(callback);

};


//Find all products


//Find One
module.exports.getProductByCategory = function (category, callback) {
    var query = {category: category};
    Product.findOne(query, callback);
};

//Find All
module.exports.getAllProductListings = function (docs) {
    var query = {};
    Product.find(query, function (err, docs) {
        console.log(docs);
    });


};

console.log(docs);在我的控制台窗口中也会显示我所期望的内容,但是“docs”并未以与之前的“findOne”相同的方式传递给getAllProductListings。

我在getAllProductListings函数中只有一个返回值,因为它不带参数。

我肯定做些傻事,如果可以,请赐教。

1 个答案:

答案 0 :(得分:1)

由于getAllProductListings是异步的,您需要在回调中发送响应:

// Get latest listings
router.get('/latest/all', function (req, res, next) {
Product.getAllProductListings(res);
});

在您的product.js

//Find All
module.exports.getAllProductListings = function (response) {
var query = {};
Product.find(query, function (err, docs) {
    console.log(docs);
    response.send(docs);
});