7

モジュール関数から結果を返すのに問題があります。
以下は、私が作業している2つのファイルです。

エクスポートされた関数を呼び出すと、何も返されません。
理由に関する提案/修正はありますか? コールバックと関係がありますか?

モデル/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
4

2 に答える 2

0

私は別の方法で同様の問題を解決します。それが正しい方法かどうかはわかりません。

メイン ノード js では、product という名前のモデルを使用しています。product と res を misc.js に渡しています。以下は私のserver.jsファイルの一部です

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

IN 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);
        }
    });


};
于 2015-12-04T09:20:57.297 に答える