摘要:根據(jù)李成銀大大的文章示例想做的使用,發(fā)現(xiàn)有部分問題直接使用創(chuàng)建,每次創(chuàng)建實例導致重新創(chuàng)建新的連接,導致數(shù)據(jù)庫連接無限上漲將緩存使用,導致的復寫將這兩個問題修復后,代碼如下不過修改,自動編譯不會的不會直接修復,需要重啟服務生效創(chuàng)建連接連接數(shù)據(jù)
根據(jù)李成銀大大的文章示例想做ThinkJS的mongoose使用,發(fā)現(xiàn)有部分問題:
1、mongoose直接使用createConnection創(chuàng)建,每次Model創(chuàng)建實例導致重新創(chuàng)建新的連接,導致數(shù)據(jù)庫連接無限上漲;
2、將connection緩存使用,導致mongoose的Model復寫;
將這兩個問題修復后,代碼如下:
不過修改schema,自動編譯不會mongoose的Model不會直接修復,需要重啟服務生效;
"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ù)庫失敗:" + err); } else { think.log("連接數(shù)據(jù)庫成功!"); } }); 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; } }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/90101.html
摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫,在這個節(jié)目可以對數(shù)據(jù)庫進行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對進行增刪查改操作的簡單介紹,以后會有進階的文章。 關鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢,增加,修改,刪除 工具介紹 Mon...
摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫,在這個節(jié)目可以對數(shù)據(jù)庫進行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對進行增刪查改操作的簡單介紹,以后會有進階的文章。 關鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢,增加,修改,刪除 工具介紹 Mon...
最近在學習node,所以聽說node和mongodb更配哦。。所以我就來學習mongodb了showImg(https://segmentfault.com/img/remote/1460000006818697); 一、mongodb的開啟和關閉 1. 查找mongod是否可用 which mongod 2. 啟動mongodb 指定path 和log日志 mongod --dbpath /...
閱讀 643·2023-04-26 02:08
閱讀 2666·2021-11-18 10:02
閱讀 3471·2021-11-11 16:55
閱讀 2354·2021-08-17 10:13
閱讀 2913·2019-08-30 15:53
閱讀 693·2019-08-30 15:44
閱讀 2560·2019-08-30 11:10
閱讀 1765·2019-08-29 16:57