2
내 기능 (다른 디렉토리에 있음)을 어떻게 "약속"합니까?내 기능을 어떻게 약속합니까?
// app.js
// include database
var mongo = require('./mongo');
var promise = require('bluebird');
var u = require('./util.js');
var mongo.connect = promise.promisify(require(mongo.connect));
// connect to database
var ago = new Date(new Date()-60000); // 10m ago
var scope = {size:0.01};
mongo.connect()
.then(
mongo.endor.mapReduceAsync(u.mapTile, u.reduceTile,{
out: {replace:'deathstar'}, scope:scope,
query: {time:{$gte:ago}}, finalize:u.finalTile}))
.then(deathstar.find({},{fields:{_id:0, value: 1}})
.toArray(function(err, docs){
endor.insertAsync(_.map(docs, function(doc){return doc.value;}),{w:1});
)
);
을 그리고 여기에 다른 파일을
// mongo.js
var promise = require('bluebird');
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
promise.promisifyAll(mongodb);
module.exports.connect = promise.method(function(){
// database environment
var database;
if (process.env.NODE_ENV == 'production'){database = pro;}
else{database = database = dev;}
module.exports.database = database;
// connect to database
return MongoClient.connectAsync(database)
.then(function(db){
module.exports.db = db;
promise.all([
db.createCollectionAsync('hoth', {w:1})
.then(function(collection){
collection.ensureIndexAsync()
.then(function(index){
module.exports.hoth = collection;
console.log(index+' hoth');
});
}),
db.createCollectionAsync('endor', {w:1})
.then(function(collection){
collection.ensureIndexAsync({})
.then(function(index){
module.exports.endor = collection;
console.log(index+' endor');
});
}),
db.createCollectionAsync('alderaan', {w:1})
.then(function(collection){
collection.ensureIndexAsync({time:-1, location:'2dsphere'})
.then(function(index){
module.exports.endor = collection;
console.log(index+' alderaan');
});
})
]).then(function(){callback(null);});
}
);
});
을 그리고 여기
/Users/Josh/Development/xWing/app.js:12
mongo.connectAsync()
^
TypeError: Object #<Object> has no method 'connectAsync'
답장을 보내 주셔서 감사합니다. 제 코드가 혼란 스럽 습니다만 ... 한번 더보세요. 나는 당신의 해결책을 시도했으나 여전히 작동하지 않습니다 ... – joshula
위의'promisify'가 잘못되었습니다 - 연결시'Promise.promisify'보다는'Promise.promisifyAll (mongodb)'를 원합니다. 또한 "여전히 작동하지 않음"으로 회신 할 때 위의 코드로 시도한 결과와 실패한 내용 (오류 및시기)을 제공하십시오. –
위에서 한 번 더보세요. 나는 코드를 조정했다. 나는 내 의도를 혼란스럽게 할 수도있는 몽고 (mongo)의 다른 코드를 포함하고 있었다. – joshula