egg-mongoose 有一个官方示例:
module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
const UserSchema = new Schema({
userName: { type: String },
password: { type: String },
});
return mongoose.model('User', UserSchema);
}
使用 MongoDB Compass 可视化工具创建数据库,创建一个 collection 并导入数据。虽然 egg-moogoose 连接到了数据库,但是不能读到数据(返回空数组)。
class UserControllerextends Controller {
async getUserList() {
const { ctx } = this;
const res = await ctx.model.User.find();
ctx.body = res;
}
}
// 返回值是 []
egg-mongoose 官方示例只传了两个参数,实际上 mongoose.model 需要传三个参数,第三个参数才是 collection 名称。如果第三个参数缺省,会自动根据第一个参数以复数形式生成 collection。为了防止名称不对导致访问不到 collection ,指定第三个参数就没问题了。
mongoose.model('User', UserSchema, 'User');