在nodeJS中使用egg和mongdb遇到不少问题,今天简单记录下来
1.数据库连接配置文件
参数说明:
url: '', // 你的数据库地址,不需要端口号
options:可配置化参数
user:username // 用户名
pass:password// 数据库密码
autoIndex:false/ture // 默认是true 默认情况下,mongoose 在连接时会自动建立 schema 的索引。这有利于开发,但是在大型生产环境下不是十分理想,因为索引建立会导致性能下降。如果 autoIndex
设为 false,mongoose 将不会自动建立索引
auto_reconnect:boolean;// 底层mongdb链接丢失时自动连接触发
poolSize:5// 最大的socket链接数,默认是5
connectTimeoutMS:// 链接超时间
socketTimeoutMS :// socket链接超时
useNewUrlParser:boolean // 验证您传入的连接字符串实际上符合新解析器的预期。
useUnifiedTopology: true, 使用新的服务器发现和监视引擎
注意一下:这里使用的是egg-mongoose 来链接数据库的 参考参数
一般框架中为了更加安全,我们一般把数据库的配置文件单独存在config目录中,根据项目开发环境配置不同的服务器,通常设置一下文件
config.default.js //公共配置文件
config.dev.js //开发环境配置文件
config.prod.js //线上生产环境配置文件
config.local.js // 本地配置文件
一般安全较高的项目只用config.default.js 会提交,而prod一般是由运维人员维护的
数据库可视化工具 vscode推荐
MongoDB for VS Codemongodb.mongodb-vscode
MongoDB Compass
2.数据库表操作:
一般使用egg框架我们的model层就是对应数据库中的表结构
new mongoose.Schema({})
设置主键:
const EntranceConfigSchema = new mongoose.Schema({}) EntranceConfigSchema.index({key:1}) //key 你需要的主键
查询
Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback); // 常用的还有findOne() 、findById()
更新
update、
updateOne
Tank.update({ size: 'small' })
删除
Tank.remove({ size: 'small' })