Egg使用MongoDB时运行出现:TypeError:Cannot read property 'hasOwnProperty' of undefined
- 各种排查查阅,最终发现是由于我的MongoDB中的egg_test数据库并没有给它设置相应的管理员账号所致,= =|||
- 在Egg中安装MongoDB
- 配置
- 在app下新建文件夹model,model下新建tea.js文件
- 在app下新建文件夹service,service下新建tea.js文件
- 在app下controller文件夹新建tea.js
- 配置路由
各种排查查阅,最终发现是由于我的MongoDB中的egg_test数据库并没有给它设置相应的管理员账号所致,= =|||
- 进入MongoDB
- 切换数据库:use egg_test
- 创建用户:db.createUser({user: “root”, pwd: “root”, roles: [{ role: “dbOwner”, db: “test” }]})
- 查看用户:show users
- 搞定啦~
- 【注意】配置文件里要按下面的来配哦
在Egg中安装MongoDB
VS Code命令行中输入:npm i egg-mongoose --save
配置
文件目录:/config/plugin.js
exports.mongoose = {
enable: true,
package: ‘egg-mongoose’,
};
文件目录:/config/config.default.js
config.mongoose = {
client: {
url: ‘mongodb://127.0.0.1’,
options: {
user: ‘root’,
pass: ‘root’,
dbName: ‘egg_test’,
},
},
};
在app下新建文件夹model,model下新建tea.js文件
‘use strict’;
module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
const TeaSchema = new Schema({
name: {type: ‘string’},
password: {type: ‘string’},
});
return mongoose.model(‘Tea’, TeaSchema’);
};
在app下新建文件夹service,service下新建tea.js文件
‘use strict’;
const Service = require(‘egg’).Service;
class TeaService extends Service {
async getTeaByName() {
const ctx = this;
try {
const results = await ctx.model.Tea.find({
name: ‘jack’,
});
return results;
} catch (err) {
ctx.body = JSON.stringify(err);
}
}
}
module.exports = TeaService ;
在app下controller文件夹新建tea.js
‘use strict’;
const Controller = require(‘egg’).Controller;
class TeaController extends Controller {
async index() {
const { ctx } = this;
const result = await ctx.service.tea.getTeaByName();
ctx.body = result ;
}
}
module.exports = TeaController ;
配置路由
‘use strict’;
/**
- @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get(’/’, controller.home.index);
router.get(’/tea’, controller.tea.index);
};