2012-12-30 40 views
6

मैं mongoose/q वादा फ्रेमवर्क नमूना here से काम कर रहा हूं, लेकिन लगता है कि findOne का उपयोग करने की कोशिश करते समय nfbind के साथ कुछ समस्याएं हैं, मुख्य रूप से Q ढांचे से नमूने मिलान नहीं करते हैं जो लोग हैं।mongoose और q वादा करता है

मेरे कोड:

var mongoose = require('mongoose'); 
var Q = require('q'); 

var user_schema = mongoose.Schema({username:String, last_touched:Date, app_ids:[String]}); 
var user = mongoose.model('user', user_schema); 

exports.user = user; 
exports.user.find = Q.nfbind(user.find); 
exports.user.findOne = Q.nfbind(user.findOne); 

अगर मैं user.findOne({username:'test'}).then(function(err, user) { ... } फोन, उपयोगकर्ता हमेशा अनिर्धारित रहता है। अगर मैं निर्यात को हटा देता हूं और कॉलबैक के साथ गैर-वादा संस्करण का उपयोग करता हूं, तो मुझे उपयोगकर्ता मिल जाता है। मुझे कुछ विशेष जादू याद आ रहा है, लेकिन कोड कार्यान्वयन को देखने के बाद, क्यू जिथूब, और मोंगोज़ डेमो से उदाहरण ... कुछ भी वास्तव में बाहर नहीं निकलता है। findOne क्यू के साथ काम करने के तरीके के बारे में कोई विचार है?

मैंने मॉड्यूल के बजाय स्रोत में nfbind फ़ंक्शंस सेट करने का भी प्रयास किया है, लेकिन इसका कोई फायदा नहीं हुआ है।

+0

चेक भी इस सवाल का जवाब http://stackoverflow.com/questions/11912573/node-js-deferred-promisify-mongoose/11931908 –

उत्तर

5

क्योंकि तरीकों आप nfbinding रहे user वस्तु के तरीके हैं, तो आप उन्हें nfbind इतना गुजर कि जब कहा जाता this सूचक संरक्षित है से पहले उस वस्तु के लिए उन्हें bind की जरूरत है।

यह दृष्टिकोण मेरे लिए काम किया:

exports.user.find = Q.nfbind(user.find.bind(user)); 
exports.user.findOne = Q.nfbind(user.findOne.bind(user)); 
+0

की कोशिश की है कि करने के लिए - यहां तक ​​कि निर्यात यह सुनिश्चित करने के लिए 'खोज ByUsername'' के रूप में यह नामों में एक संघर्ष नहीं था। अभी भी वही बात प्राप्त करें: मोंगोडीबी से उपयोगकर्ता: अपरिभाषित – mlaccetti

+1

बाहर निकलता है मैं एक दुष्ट asshat हूँ और विचारों को मिला रहा था: 'user.findOne ({'steam_username': username}}। (Function (err, dbUser) { ...}) ' बस 'त्रुटि' हटा दिया (डुह, यही है। फ़ेल के लिए है), और हम दौड़ के लिए बंद थे। ड्यूर! – mlaccetti

+0

https://github.com/iolo/mongoose-q –