2016-07-21 20 views
0

私はbluebirdを使用しています。nodejs/mongoose/bluebirdで私の約束を返すことができません

私はまた、ブルーバードのPromisifyをモデルに使用しました。私のプロジェクト全体

var Promise = require('bluebird'); 
var mongoose = Promise.promisifyAll(require('mongoose')); 
var Collection = Promise.promisifyAll(require('../models/collection')); 
var Vote = Promise.promisifyAll(require('../models/vote')); 

、それが正常に働いていますが、何らかの理由で、私はそれがこの「保存」メソッドにコレクションの値を返すために取得することはできません。ここで

var CollectionSchema = new mongoose.Schema({ 
    user : {type: mongoose.Schema.ObjectId, ref: 'User', required: true}, 
    whiskey : {type: mongoose.Schema.ObjectId, ref: 'Whiskey', required: true}, 
    favorite: {type: Boolean, default: false}, 
    timestamp: { type : Date, default: Date.now } 
}); 

    CollectionSchema.statics.createCollection = function(o) { 
     console.log('hit model') 
     return Collection 
     .findAsync(o) 
     .then(function(existing) { 
      console.log('existing collection ', existing) 
      if (existing.length) { 
      return{ 
       message: 'already collected' 
      } 
      } else { 
      console.log('no existing collections found') 
      return Collection 
      .saveAsync(o) 
      .then(function(collection) { 
       console.log('new collection/does not console.log ', collection) 
       return { 
       collection: collection 
       }; 
      }); 
      } 
     }) 
     }; 

がcollectionCreateメソッドが呼び出されるとの約束からの応答のデータ」を期待しているコントローラ、次のとおりです。

は、ここに私のモデルです。私が間違っていたところ、私は本当に指摘して目の第2のセットを使用することができ

exports.create = function(req, res){ 
    console.log('init') 
    console.log('init body ', req.body) 
    Collection.createCollectionAsync({user: req.user._id, whiskey: req.body.whiskey}).then(function(data){ 
    console.log('collection promise ', data) 
    res.send(data); 
    }) 
}; 

:しかし、saveAsyncマングースの方法は、呼び出したり返すように思われません。

答えて

1

約束を返す機能の約束されたバージョン…Asyncを使用することは想定されていません。それはBluebirdがコールバックされることのない追加のコールバックを渡すだけにつながります。

Collection.createCollection({user: req.user._id, whiskey: req.body.whiskey}).then(function(data){ 
    res.send(data); 
}, function(err) { 
    … 
}) 
+0

意味があります。再びありがとう@Bergi。私はあなたの頭の中でこれを包み込むのを手伝ってくれて、あなたに借りている。 – NoobSter

関連する問題