簡體   English   中英

module.export函數不返回結果

[英]module.export function not returning results

我在從模塊函數返回結果時遇到一些問題。
以下是我正在使用的兩個文件。

當我調用導出的函數時,它返回nothings。
有什么建議/修復原因嗎? 它與回調有關嗎?

車型/ index.js

module.exports = exports = function(library) {    
    modCodes.findOne({name: library}, {modcode:1}, function(err, mc) {
      if (err) throw new Error(err);
      var db = mongoose.createConnection('mongodb://localhost:27017/' + mc.modcode + '?safe=true');
      var models = {
        Books: db.model('books', require('./schemas/books'))
        }

        return models;
    });

};

books.js

var Models = require('../models');    
console.log(Models("myLibrary")); //return nothing

你沒有得到結果的原因是你試圖從異步回調中同步返回一個函數值。 而不是提供函數值,return語句將改為停止函數,作為return; 通常會這樣做。 這就是您必須使用回調進行異步操作的原因:

module.exports = exports = function(library, callback) {
  modCodes.findOne({name: library}, {modcode: 1}, function (err, mc) {
    if (err) throw new Error(err);
    var db = mongoose.createConnection('mongodb://localhost:27017/' + mc.modcode + '?safe=true');
    var models = {
      Books: db.model('books', require('./schemas/books'))
    }
    callback(models);
  });
};

這就是你如何使用它:

var Models = require('../models');    
Models('myLibrary', function(models) {
  console.log(models);
});

我以不同的方式解決類似的問題。 我不確定這是否正確。

在主節點js我使用的是名為product的模型。 我正在將產品和res傳遞給misc.js. 以下是我的server.js文件的一部分

var misc = require('./misc');
app.get('/groupbyCategory', function(req,res,next)
   {
     var res2; 
     misc.addX(product,res);
    })

在misc.js中按功能進行分組,並將該值直接返回到角度控制器。 沒有必要將結果返回到server.js並從server.js返回到返回角度控制器。 所以我覺得等待,其他回電似乎沒必要。 在misc.js里面我繼續遵循代碼。

exports.addX = function(product,res) {
 product.aggregate([

 { $group: {
 _id: {category: "$category"},
     count: { $sum: 1 }
        }}    
     ], function (err, result) {
     if (err) {
     console.log(err);
     return err; 
       }
       else
       {  
       //return result;

        console.log(result);
        res.send(result);
        }
    });


};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM