<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 承諾(promises) > 原文:[Built-in Promises](http://mongoosejs.com/docs/promises.html) ## Built-in Promises Mongoose異步操作,像`.save()`和查詢,返回[Promises/A+ conformant promises](https://promisesaplus.com/)。這意味著你可以像`MyModel.findOne({}).then()`和 `MyModel.findOne({}).exec()`(如果你使用[co](https://www.npmjs.com/package/co)包)。 為了向后兼容,Mongoose 4返回默認mpromise承諾。 ``` var gnr = new Band({ name: "Guns N' Roses", members: ['Axl', 'Slash'] }); var promise = gnr.save(); assert.ok(promise instanceof require('mpromise')); promise.then(function (doc) { assert.equal(doc.name, "Guns N' Roses"); }); ``` ### Queries are not promises Mongoose查詢不是承諾。然而,他們也有一個`.then()`功能為產量和異步/等待。如果你需要一個完全成熟的承諾,用`.exec()`功能。 ``` var query = Band.findOne({name: "Guns N' Roses"}); assert.ok(!(query instanceof require('mpromise'))); // A query is not a fully-fledged promise, but it does have a `.then()`. query.then(function (doc) { // use doc }); // `.exec()` gives you a fully-fledged promise var promise = query.exec(); assert.ok(promise instanceof require('mpromise')); promise.then(function (doc) { // use doc }); ``` ### Plugging in your own Promises Library > Mongoose 4.1.0 新特性 而mpromise滿足基本使用的情況下,高級用戶可能想插上自己喜歡的[ES6風格](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)[承諾類庫](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)像[bluebird](https://www.npmjs.com/package/bluebird),或只使用本地的ES6承諾。只需要設置`mongoose.Promise`到你喜歡的ES6風格承諾構造函數,mongoose會使用它。 隨著本土承諾ES6Mongoose試驗,[bluebird](https://www.npmjs.com/package/bluebird)和[q](https://www.npmjs.com/package/q)。任何承諾類庫,理論上導出一個ES6風格的構造函數應該工作,但理論往往不同于實踐。如果你發現一個bug,開放式問題在[GitHub](https://github.com/Automattic/mongoose/issues)上。 ``` var query = Band.findOne({name: "Guns N' Roses"}); // Use native promises mongoose.Promise = global.Promise; assert.equal(query.exec().constructor, global.Promise); // Use bluebird mongoose.Promise = require('bluebird'); assert.equal(query.exec().constructor, require('bluebird')); // Use q. Note that you **must** use `require('q').Promise`. mongoose.Promise = require('q').Promise; assert.ok(query.exec() instanceof require('q').makePromise); ``` ### Promises for the MongoDB Driver mongoose。承諾的屬性集的mongoose用承諾。然而,這并不影響底層的MongoDB的驅動程序;。如果你使用了底層的驅動程序,例如`Model.collection.db.insert()`,你需要做一些額外的工作來改變其所承諾的類庫。注意,下面的代碼假定mongoose> = 4.4.4。 ``` var uri = 'mongodb://localhost:27017/mongoose_test'; // Use bluebird var options = { promiseLibrary: require('bluebird') }; var db = mongoose.createConnection(uri, options); Band = db.model('band-promises', { name: String }); db.on('open', function() { assert.equal(Band.collection.findOne().constructor, require('bluebird')); }); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看