问题描述
-
mongoose 创建数据库,想把
- 链接数据库文件 (database.js) ,
- 定义 Schema 逻辑文件,(schema.js)
- 操作数据逻辑文件test.js 分开
但是报错,说 schema 未注册
问题出现的环境背景及自己尝试过哪些方法
- 我所有代码全部写在一个文件里面是可以插入成功的,但是分开多个文件就是不行
相关代码
# /index.js 入口
const { connect, initSchema } = require('./database');
(async () => {
await connect();
initSchema();
})();
#/database.js
var mongoose = require('mongoose');
var { resolve } = require('path');
exports.connect = () => {
return new Promise((resolve, reject) => {
mongoose.connect('mongodb://localhost:27017/test');
mongoose.connection.on('open', () => {
resolve();
console.log('链接数据库');
});
});
};
exports.initSchema = () => {
require(resolve(__dirname, './schema.js'));
};
# /schema.js
var mongoose = require('mongoose');
let Schema = mongoose.Schema({
category: String,
name: String
});
mongoose.model('fruit', Schema);
# /test.js 操作文件
var mongoose = require('mongoose');
let Model = mongoose.model('fruit');
//生成一个document
let apple = new Model({
category: 'tt',
name: 'tt'
});
console.log(apple);
//存放数据
apple.save((err, apple) => {
if (err) return console.log(err);
console.log(apple);
});
你期待的结果是什么?实际看到的错误信息又是什么?
报错信息
- 想知道为什么未注册,里面的加载顺序是怎样的?
初始化数据库,建立 schema 和 test脚本需要放在一个文件里执行就好了