<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MongooseMongoDB 異步模型工具

          聯(lián)合創(chuàng)作 · 2023-09-30 18:10

          Mongoose 是設(shè)計(jì)用于異步環(huán)境的 MongoDB 對(duì)象模型工具,支持 promises 和 callbacks。

          概述

          連接到 MongoDB

          首先需要定義一個(gè)連接。如果應(yīng)用僅使用一個(gè)數(shù)據(jù)庫(kù),則使用mongoose.connect。如果需要?jiǎng)?chuàng)建其他連接,請(qǐng)使用mongoose.createConnection

          connect 和 createConnection都使用 mongodb://URI,或者 host, database, port, options參數(shù)。

          await mongoose.connect('mongodb://localhost/my_database');

          連接后,open將在Connection實(shí)例上觸發(fā)該事件。

          注意: 如果本地連接失敗,請(qǐng)嘗試使用 127.0.0.1 而不是 localhost,更改本地主機(jī)名可能會(huì)出現(xiàn)問(wèn)題。

          Mongoose 會(huì)緩沖所有命令,直到它連接到數(shù)據(jù)庫(kù),這意味著不必等到它連接到 MongoDB 才開(kāi)始定義模型、運(yùn)行查詢。

          定義模型

          模型是通過(guò) Schema 接口定義的:

          const Schema = mongoose.Schema;
          const ObjectId = Schema.ObjectId;
          
          const BlogPost = new Schema({
            author: ObjectId,
            title: String,
            body: String,
            date: Date
          });

          除了定義文檔的結(jié)構(gòu)和存儲(chǔ)的數(shù)據(jù)類型之外,Schema 還處理以下定義:

          以下是上述功能的一些用法:

          const Comment = new Schema({
            name: { type: String, default: 'hahaha' },
            age: { type: Number, min: 18, index: true },
            bio: { type: String, match: /[a-z]/ },
            date: { type: Date, default: Date.now },
            buff: Buffer
          });
          
          // a setter
          Comment.path('name').set(function (v) {
            return capitalize(v);
          });
          
          // middleware
          Comment.pre('save', function (next) {
            notify(this.get('email'));
            next();
          });

          查看examples/schema/schema.js示例中的典型設(shè)置端到端示例。

          訪問(wèn)模型

          一旦我們通過(guò) mongoose.model('ModelName', mySchema)定義了一個(gè)模型,就可以通過(guò)相同的函數(shù)訪問(wèn)它:

          const MyModel = mongoose.model('ModelName');

          或者一次性完成:

          const MyModel = mongoose.model('ModelName', mySchema);

          第一個(gè)參數(shù)是模型所針對(duì)的集合的單數(shù)名稱。Mongoose 會(huì)自動(dòng)查找模型名稱的復(fù)數(shù)形式。例如:

          const MyModel = mongoose.model('Ticket', mySchema);

          Mongoose 會(huì)為 tickets 集合建立模型,而不是 ticket 集合。

          一旦我們有了模型,就可以實(shí)例化并保存它:

          const instance = new MyModel();
          instance.my.key = 'hello';
          instance.save(function (err) {
            //
          });

          可以從同一個(gè)集合中找到文檔

          MyModel.find({}, function (err, docs) {
            // docs.forEach
          });
          瀏覽 12
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青草久久視頻網站 | 插吧插吧网 | 亚洲AV综合AV东京热三区 | 无码熟妇人妻AV在线电影 | 日日骚AV |