摘要:根據(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
摘要:如圖連接成功后,顯示你的數(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...
摘要:如圖連接成功后,顯示你的數(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...
最近在學(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 /...
閱讀 623·2023-04-26 02:08
閱讀 2654·2021-11-18 10:02
閱讀 3460·2021-11-11 16:55
閱讀 2341·2021-08-17 10:13
閱讀 2901·2019-08-30 15:53
閱讀 685·2019-08-30 15:44
閱讀 2545·2019-08-30 11:10
閱讀 1755·2019-08-29 16:57