国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

ThinkJS2 mongoose 使用

Jeff / 1989人閱讀

摘要:根據(jù)李成銀大大的文章示例想做的使用,發(fā)現(xiàn)有部分問(wèn)題直接使用創(chuàng)建,每次創(chuàng)建實(shí)例導(dǎo)致重新創(chuàng)建新的連接,導(dǎo)致數(shù)據(jù)庫(kù)連接無(wú)限上漲將緩存使用,導(dǎo)致的復(fù)寫(xiě)將這兩個(gè)問(wèn)題修復(fù)后,代碼如下不過(guò)修改,自動(dòng)編譯不會(huì)的不會(huì)直接修復(fù),需要重啟服務(wù)生效創(chuàng)建連接連接數(shù)據(jù)

根據(jù)李成銀大大的文章示例想做ThinkJS的mongoose使用,發(fā)現(xiàn)有部分問(wèn)題:
1、mongoose直接使用createConnection創(chuàng)建,每次Model創(chuàng)建實(shí)例導(dǎo)致重新創(chuàng)建新的連接,導(dǎo)致數(shù)據(jù)庫(kù)連接無(wú)限上漲;
2、將connection緩存使用,導(dǎo)致mongoose的Model復(fù)寫(xiě);

將這兩個(gè)問(wèn)題修復(fù)后,代碼如下:
不過(guò)修改schema,自動(dòng)編譯不會(huì)mongoose的Model不會(huì)直接修復(fù),需要重啟服務(wù)生效;

"use strict";

let mongoose = require("mongoose");

let conn = null;
/**
 * model
 */
export default class extends think.base {
  /**
   * schema
   * @type {Object}
   */
  schema = {};
  /**
   * model instance
   * @type {[type]}
   */
  _model = null;

  /**
   * constructor
   * @param  {[type]} name   [description]
   * @param  {Object} config [description]
   * @return {[type]}        [description]
   */
  constructor(name, config = {}) {
    super();
    if (think.isObject(name)) {
      config = name;
      name = "";
    }
    this.name = name;
    this.config = think.parseConfig(config);
  }

  /**
   * 創(chuàng)建連接
   * @return {[type]} [description]
   */
  getConnection() {
    if (conn) {
      return conn;
    }
    let user = "";
    if (this.config.user) {
      user = this.config.user + ":" + this.config.password + "@";
    }
    let host = this.config.host || "127.0.0.1";
    let port = this.config.port || 27017;
    let str = `mongodb://${user}${host}:${port}/${this.config.database}`;
    conn = mongoose.createConnection(str);
    conn.on("connected", function (err) {
      if (err) {
        think.log("連接數(shù)據(jù)庫(kù)失敗:" + err);
      } else {
        think.log("連接數(shù)據(jù)庫(kù)成功!");
      }
    });
    mongoose.Promise = Promise;
    return conn;
  }

  /**
   * 獲取 Mongoose 里的 Model
   * @return {[type]} [description]
   */
  getModel() {
    if (!this._model) {
      let connection = this.getConnection();
      if(this.name in connection.models){
        this._model = connection.model(this.name);
      }else{
        this._model = connection.model(this.name, new mongoose.Schema(this.schema));
      }
    }
    return this._model;
  }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90101.html

相關(guān)文章

  • 在Node中基于Mongoose對(duì)MongoDB進(jìn)行增刪查改(CRUD)操作(一)

    摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫(kù),在這個(gè)節(jié)目可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對(duì)進(jìn)行增刪查改操作的簡(jiǎn)單介紹,以后會(huì)有進(jìn)階的文章。 關(guān)鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢(xún),增加,修改,刪除 工具介紹 Mon...

    lemon 評(píng)論0 收藏0
  • 在Node中基于Mongoose對(duì)MongoDB進(jìn)行增刪查改(CRUD)操作(一)

    摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫(kù),在這個(gè)節(jié)目可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對(duì)進(jìn)行增刪查改操作的簡(jiǎn)單介紹,以后會(huì)有進(jìn)階的文章。 關(guān)鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢(xún),增加,修改,刪除 工具介紹 Mon...

    SillyMonkey 評(píng)論0 收藏0
  • mongodb數(shù)據(jù)庫(kù)的使用

    最近在學(xué)習(xí)node,所以聽(tīng)說(shuō)node和mongodb更配哦。。所以我就來(lái)學(xué)習(xí)mongodb了showImg(https://segmentfault.com/img/remote/1460000006818697); 一、mongodb的開(kāi)啟和關(guān)閉 1. 查找mongod是否可用 which mongod 2. 啟動(dòng)mongodb 指定path 和log日志 mongod --dbpath /...

    劉玉平 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<