Mongoose: λͺ¨λΈ μ €μž₯ μž‘μ—…μ— '약속' λ°˜ν™˜ κ°’ μΆ”κ°€

에 λ§Œλ“  2013λ…„ 04μ›” 16일  Β·  50μ½”λ©˜νŠΈ  Β·  좜처: Automattic/mongoose

μž‘μ—…μ„ μ €μž₯ν•˜κΈ° μœ„ν•΄ 약속 λ°˜ν™˜ 지원을 μΆ”κ°€ν•˜κ³  ν˜„μž¬ μ •μ˜λ˜μ§€ μ•Šμ€ λ°˜ν™˜ν•©λ‹ˆλ‹€. μ—…λ°μ΄νŠΈν•΄μ•Ό ν•˜λŠ” μœ νš¨μ„± 검사 및 μ €μž₯ μƒνƒœμ— 따라 μ—¬λŸ¬ λ°˜ν™˜ κ²½λ‘œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 쀑첩 λŒ€μ‹  .then()을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ μ €μž₯ μž‘μ—…μ„ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ§€κΈˆμ€ λ‹€μŒκ³Ό 같이 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

userSchema.methods.saveAsync = function() {
  return new Promise((resolve,reject) => {
    this.save((err) => {
      if(err) return reject(err)
      resolve()
    })
  })
}

λͺ¨λ“  50 λŒ“κΈ€

λ‚˜λŠ” 이것을 4.x의 λͺ©λ‘μ— μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 미듀웨어 κ΅¬ν˜„ 방식(hooks.js)κ³Ό 관련이 μžˆμŠ΅λ‹ˆλ‹€.

ꡉμž₯ν•©λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚΄ ν”„λ‘œμ νŠΈμ— λŒ€ν•œ mongoose Promise 개체의 ν™•μž₯으둜 jquery의 .when 버전을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. 그것이 당신이 ν’€ λ¦¬ν€˜μŠ€νŠΈμ— 관심을 κ°€μ§ˆλ§Œν•œ κ²ƒμž…λ‹ˆκΉŒ?

var p1 = Users.find();
var p2 = Animals.find();
Promise.when(p1, p2).addBack(function(err, μ‚¬μš©μž, 동물) {
//λ“±
});

고맙지 만 사양 ν• κ²Œ. λͺ½κ΅¬μŠ€ μ™ΈλΆ€μ—μ„œ κ΅¬ν˜„ν•  수 μžˆλŠ” κΈ°λŠ₯을 더 μΆ”κ°€ν•˜κ³  μ‹Άμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. 이미 λΆ€ν’€μ–΄ μ˜¬λžμŠ΅λ‹ˆλ‹€.

이 μŠ€λ ˆλ“œλ₯Ό μ°ΎλŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ„ μœ„ν•΄ 여기에 μžˆμŠ΅λ‹ˆλ‹€: https://github.com/wshaver/mongoosewhen

@wshaver λŠ” 그것을 npm에 κ²Œμ‹œν•˜κ³  mongoose νƒœκ·Έλ₯Ό μΆ”κ°€ν•˜μ—¬ http://plugins.mongoosejs.com 에 ν‘œμ‹œλ˜λ„λ‘ ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ Mongoose ν”ŒλŸ¬κ·ΈμΈμ˜ 이름에 λŒ€μ‹œ μ‚¬μš©μ„ μ€€μˆ˜ν•˜κΈ° μœ„ν•΄ https://github.com/wshaver/mongoose-when 으둜 μ΄λ™ν–ˆμŠ΅λ‹ˆλ‹€.

npm에 κ²Œμ‹œλ˜κ³  νƒœκ·Έκ°€ μ§€μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 아직 λ‚˜νƒ€λ‚˜μ§€λŠ” μ•Šμ•˜μ§€λ§Œ 지연이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

@wshaver 멋지닀. ν•˜λ£¨μ— ν•œ 번 μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€.

#1446을 νŒŒν—€μΉœ ν›„ "hooks.js"λ₯Ό μ œκ±°ν•˜μ§€ μ•Šκ³ λ„ 이것을 달성할 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
초둝뢈?

그것을 μœ„ν•΄ κ°€μ‹­μ‹œμ˜€

2013λ…„ 10μ›” 7일 μ›”μš”μΌμ— Refael Ackermann은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

#1446 https://github.com/LearnBoost/mongoose/issues/1446 을 νŒŒν—€μΉœ ν›„ "hooks.js"λ₯Ό μ œκ±°ν•˜μ§€ μ•Šκ³ λ„ 이것을 달성할 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
초둝뢈?

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ Gi tHubhttps://github.com/LearnBoost/mongoose/issues/1431#issuecomment -25792310μ—μ„œ ν™•μΈν•˜μ„Έμš”.
.

μ•„λ‘ 
@aaronheckmann https://twitter.com/#!/aaronheckmann
soundcloud.com/ajhecky
github.com/aheckmann

λΉ… PR μ€€λΉ„

이것은 μ €μ—κ²Œλ„ 정말 도움이 될 κ²ƒμž…λ‹ˆλ‹€. myDoc.save().exec()λ₯Ό ν˜ΈμΆœν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 기본적으둜 saveλŠ” μ‹€ν–‰ν•  수 μžˆλŠ” 쿼리λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ˜λŠ” Saveκ°€ Queryλ₯Ό λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

μ½œλ°±μ„ μƒλž΅ν•˜λ©΄ 약속 λ°˜ν™˜μ— λŒ€ν•΄ +1

μˆ˜μ • 사항은 master 뢄기에 있으며 3.10에 포함될 μ˜ˆμ •μž…λ‹ˆλ‹€.

μ—¬κΈ°μ—λŠ” λͺ¨λΈ 생성 μž‘μ—…μ— λŒ€ν•΄ λ°˜ν™˜λœ 약속이 ν¬ν•¨λ©λ‹ˆκΉŒ?

@GDownes create() λŠ” 이미 약속을 λ°˜ν™˜ν•©λ‹ˆλ‹€ :) http://mongoosejs.com/docs/api.html#model_Model.create

3.10에 λŒ€ν•œ κ³„νšλœ 릴리슀 λ‚ μ§œκ°€ μžˆμŠ΅λ‹ˆκΉŒ? :)

@swayf 4.0은 아직 λͺ‡ κ°œμ›” λ‚¨μ•˜μŠ΅λ‹ˆλ‹€. λͺ¨λž˜ μœ„μ˜ λ‚΄ 라인은 9μ›” 2μΌμ΄μ§€λ§Œ κ·Έ 전에 λ°”λžλ‹ˆλ‹€ :)

이것이 아직 λ‹€μŒ λ²„μ „μœΌλ‘œ μ˜ˆμ •λ˜μ–΄ μžˆμŠ΅λ‹ˆκΉŒ?

예, 이것은 4.0에 μžˆμ„ μ˜ˆμ •μ΄μ§€λ§Œ 아직 릴리슀 λ‚ μ§œκ°€ μ—†μŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰ 견적이 μ •ν™•ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€ :(

:+1:

+1 이유:

후크 전에 mocha ν…ŒμŠ€νŠΈμ—μ„œ 2개의 λ¬Έμ„œλ₯Ό μ €μž₯ν•΄μ•Ό ν•˜λ©° 이 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ 두 λͺ¨λΈμ΄ λͺ¨λ‘ μ €μž₯되면 done() μ½œλ°±μ„ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Collection.insert([docs], done) λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄ λ³΄μ•˜μ§€λ§Œ 일뢀 값을 ν•΄μ‹œν•΄μ•Ό ν•˜λŠ” Schema.pre('save') 논리λ₯Ό νŠΈλ¦¬κ±°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@arathael 항상 비동기 λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ 두 λ¬Έμ„œλ₯Ό async.parallel 에 μ €μž₯ν•˜κ³  μ½œλ°±μ—μ„œ μ™„λ£Œλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€. μ§€κΈˆ μ‹€μ œλ‘œ ν…ŒμŠ€νŠΈ μ€‘μž…λ‹ˆλ‹€. ODM의 κΈ°λ³Έ 지원이 흔듀릴 것 κ°™μ•„μ„œ κ·Έλƒ₯ λ›°μ–΄λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

+1

μ €λŠ” 6to5λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€ν—˜μ μΈ ES7 await/asyncλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. record.save()κ°€ 약속을 λ°˜ν™˜ν•˜λ©΄ λ‹€μŒκ³Ό 같이 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

try {
  await record.save()
} catch(err) {
  ...
}

μ§€κΈˆμ€ λ‹€μŒκ³Ό 같이 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

userSchema.methods.saveAsync = function() {
  return new Promise((resolve,reject) => {
    this.save((err) => {
      if(err) return reject(err)
      resolve()
    })
  })
}

@aaronshaf 의 경우 +1, μ €μ—κ²Œ 잘 μž‘λ™ν•©λ‹ˆλ‹€. ES6을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄ ES5에도 μž‘μ„±ν•˜κ² μŠ΅λ‹ˆλ‹€. 감사 ν•΄μš”

μ—¬κΈ° λ‚΄κ°€ μ§€κΈˆ ν•œ 일이 μžˆμŠ΅λ‹ˆλ‹€. λΆ„λͺ…νžˆ QλŠ” ν•„μš”ν•˜μ§€ μ•Šμ§€λ§Œ λ‹€λ₯Έ κ³³μ—μ„œ 약속에 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

/*
 * Hack until mongoose 3.10 comes out. See this: https://github.com/LearnBoost/mongoose/issues/1431
 */
mongoose.Document.prototype.savePromise = function () {
    var that = this;
    return Q.Promise(function(resolve, reject) {
        that.save(function (err, item, numberAffected) {
            if (err) {
                reject(err);
            }
            resolve(item, numberAffected);
        });
    });
};

mongoose.Document.prototype.removePromise = function () {
    var that = this;
    return Q.Promise(function(resolve, reject) {
        that.remove(function (err, item) {
            if (err) {
                reject(err);
            }
            resolve(item);
        });
    });
};

ν•΄ν‚Ή @jhullfly μ—μ„œ +1ν•˜μ§€λ§Œ Q의 해결은 ν•˜λ‚˜μ˜ 인수만 μ·¨ν•˜λ―€λ‘œ numberAffectedκ°€ μ‚­μ œλ˜κ³  λ‘˜ 닀에 μ•‘μ„ΈμŠ€ν•˜λ €λ©΄ λ°°μ—΄μ΄λ‚˜ 무언가에 λ„£μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

mongoose.Document.prototype.savePromise = function () {
    var that = this;
    return Q.Promise(function(resolve, reject) {
        that.save(function (err, item, numberAffected) {
            if (err) {
                reject(err);
            }
            resolve([item, numberAffected]);
        });
    });
};

μ €μž₯μ—μ„œ λ°˜ν™˜λœ 약속에 λŒ€ν•΄ 1+!

이제 save λŠ” 4.0.1μ—μ„œ 약속을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 건배.

+1

@arathael +1

save κ°€ Promise와 ν•¨κ»˜ μ‚¬μš©λ˜λŠ” 방식과 κ΄€λ ¨λœ λ¬Έμ„œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‹€μŒμ„ μ‹œλ„ν–ˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

var User = mongoose.model('User');
var u = new User();
u.save().then(function() {
// never gets here.
});
// I even tried the following, and neither works.
u.save().then(function() {}).end();

mongoose 4.0.1을 μ‚¬μš© 쀑이고 npm으둜 μ„€μΉ˜ν–ˆμŠ΅λ‹ˆκΉŒ?

@Ouwen 예, μ €λŠ” 4.0.1을 μ‹€ν–‰ 쀑이며 예, 그렇지 μ•ŠμœΌλ©΄ mongooseκ°€ μ„€μΉ˜λ˜μ§€ μ•Šμ€ 경우 였λ₯˜κ°€ λ°œμƒν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€.

λ¬Έμ œλŠ” then κ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ‚΄κ°€ μ΄μƒν•œ μΌμ„ν•˜κ³  μžˆλ‹€κ³  ν™•μ‹ ν•˜μ§€λ§Œ (그렇지 μ•ŠμœΌλ©΄ 버그가 빨리 제기 될 κ²ƒμž…λ‹ˆλ‹€) 이유λ₯Ό μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. 주변에 예제/λ¬Έμ„œκ°€ μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

흠, 맀우 μ΄μƒν•©λ‹ˆλ‹€. λ‚˜λŠ” 3.8.8을 μ‹€ν–‰ 쀑이고 4.0.1κΉŒμ§€ npm installν•˜λŠ” 것을 μžŠμ—ˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 이것이 u.save()μ—μ„œ 약속이 λ°˜ν™˜λ˜μ§€ μ•Šμ€ μ΄μœ μž…λ‹ˆλ‹€

μž‘μ„±ν•œ λ‚΄μš©μ΄ μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€.

@limianwang mongodb μ„œλ²„μ— μ„±κ³΅μ μœΌλ‘œ μ—°κ²°ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 이것을 μž¬ν˜„ν•˜λŠ” 독립 μ‹€ν–‰ν˜• 예제λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

.save()에 μ˜ν•΄ λ°˜ν™˜λœ promise κ°μ²΄λŠ” λ‹€λ₯Έ promise와 같지 μ•Šκ³  onReject λŒ€μ‹  catch/caughtκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λͺ½κ΅¬μŠ€ 4.1.10 및 ...

var u = new User();
u.save().then(...)

μ—¬μ „νžˆ 약속을 λ°˜ν™˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

@xrado μ’€ 더 μ‹€μ§ˆμ μΈ 예λ₯Ό μ œκ³΅ν•΄μ£Όμ„Έμš”. mongoose 4.1.10μ—μ„œ μž‘λ™ν•΄μ•Ό 함을 λ³΄μ—¬μ£ΌλŠ” ν…ŒμŠ€νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.

@vkarpov15 λ‚΄ λ‚˜μœ, λ‚˜λŠ” 그것을 λ‹€μ‹œ μ‹œλ„ν•˜κ³  μž‘λ™ν•©λ‹ˆλ‹€ ..λ‚΄κ°€ 전에 λ¬΄μ—‡μ„ν•˜κ³  μžˆμ—ˆλŠ”μ§€ ..μ£„μ†‘ν•©λ‹ˆλ‹€

λ‚˜λŠ” 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. SaveλŠ” 데이터λ₯Ό db에 μ¦‰μ‹œ μ €μž₯ν•˜κ³  κ·Έλ•Œ μ½”λ“œλ₯Ό ν˜ΈμΆœν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄μƒν•œ 점은 then 블둝을 ν˜ΈμΆœν•œ 또 λ‹€λ₯Έ μ½”λ“œμ˜ 평화가 μžˆμ—ˆκ³  약속이 μž‘λ™ν–ˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ½”λ“œ( user.save() λΆ€λΆ„μ—μ„œ μ €μž₯ν•œ λ‹€μŒ μ •μ˜λ˜μ§€ μ•Šμ•˜μ§€λ§Œ ν˜ΈμΆœλ˜μ§€ μ•ŠμŒ)

user.save().then( function(userX) { // μ €μž₯ μž‘μ—…
console.log(2); // ν˜ΈμΆœλ˜μ§€ μ•ŠμŒ
}).end() // ν˜ΈμΆœλ˜μ§€ μ•ŠμŒ
.then(μ •μ˜λ˜μ§€ μ•ŠμŒ, ν•¨μˆ˜(였λ₯˜){
console.log('err:' + err ); // ν˜ΈμΆœλ˜μ§€ μ•ŠμŒ
});

μ—…λ°μ΄νŠΈλŠ” 이전 방식을 μ‚¬μš©ν–ˆμœΌλ©° λ‹€μŒκ³Ό 같이 μž‘λ™ν•©λ‹ˆλ‹€.

user.save(ν•¨μˆ˜(err, newuser) {
if (err) console.log('err=' + err);
console.log('μ €μž₯된 μ‚¬μš©μž');
});

WTF: 해결책은 λ‹¨μˆœνžˆ mongoose의 버전을 "3.8.X"μ—μ„œ ^4.1.9둜 λ³€κ²½ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

그런 λ‹€μŒ user.save().then( function(userX) { // μ €μž₯이 μž‘λ™ν•©λ‹ˆλ‹€.
console.log(2);
}).끝()
.then(μ •μ˜λ˜μ§€ μ•ŠμŒ, ν•¨μˆ˜(였λ₯˜){
console.log('err:' + err );
});

곡μž₯!!!!!!!!!!! λ‹¬μ½€ν•œ....

@nickjohngray μ•Œμ•„λ‚΄μ„œ κΈ°μ©λ‹ˆλ‹€ :) κ·Έλž˜λ„ mongoose와 ν•¨κ»˜ Promiseλ₯Ό 계속 μ‚¬μš©ν•˜κΈ° 전에 λ¬Έμ„œμ—μ„œ Promise κ°€μ΄λ“œ λ₯Ό μ½λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. κ±±μ •ν•˜μ§€ λ§ˆμ„Έμš”. 짧은 κΈ€μž…λ‹ˆλ‹€.

같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ ... 약속 λ‚΄μ—μ„œ μž‘μ—…ν•˜κΈ° μœ„ν•΄ μ €μž₯을 μ–»κΈ° μœ„ν•΄ 전체 μ£Όμš” 릴리슀λ₯Ό λ‹€μš΄ κ·Έλ ˆμ΄λ“œν•˜μ§€ μ•Šμ•„λ„λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

@jhyland87 λ¬Έμ œκ°€ 무엇인지 확인할 수 μžˆλ„λ‘ μ½”λ“œ μƒ˜ν”Œμ„ μ œκ³΅ν•˜μ„Έμš”.

@vkarpov15 λ‚΄κ°€ κ·Έλž¬μ–΄, ν‹°μΌ“ μ—μ„œ

이것은 λ‹€λ₯Έ ν‹°μΌ“μ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€ ...

기본적으둜 이 μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

var User = mongoose.model('User');
var u = new User();
u.save().then(function() {
// never gets here.
});

λ¬Έμ„œλ₯Ό μ €μž₯ν•  λ•Œ μΆ”κ°€λœ return κ°€ ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ:

var User = mongoose.model('User');
var u = new User();
return u.save().then(function() {
// never gets here.
});

@jhyland87 , 참고둜 - Mongoose와 약속을 μ—°κ²°ν•˜λŠ” 또 λ‹€λ₯Έ μ˜ˆμž…λ‹ˆλ‹€.

이것이 μ—¬μ „νžˆ λ¬Έμ œμž…λ‹ˆκΉŒ?

λ‹€μŒ μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€(TypeScript μ‚¬μš©)...

User.findById(id)
.exec()
.then((user) => {
  user.name = 'new name from wherever!';
  return user.save();
})
.then((user) => {
  // want to do more stuff with the user object once it has been saved successfully...
  // ... but it never makes it here!!!
};

κ·ΈλŸ¬λ‚˜ save() ν•¨μˆ˜μ— 빈 μ½œλ°±μ„ μΆ”κ°€ν•˜λ©΄ μ•„λž˜μ™€ 같이 λͺ¨λ“  것이 잘 λ³΄μž…λ‹ˆλ‹€.

User.findById(id)
.exec()
.then((user) => {
  user.name = 'new name from wherever!';
  return user.save(() => {
    // unwanted empty callback... hmmm?
  });
})
.then((user) => {
  // we made it here!!! but now...
  // user === undefined :(
};

당신은 약속을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? mongoose.Promise = global.Promise; (으)둜 μ „ν™˜ν•΄ λ³΄μ„Έμš”.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰