Javascript Mongoose模型在init函数退出后立即消失
编辑Javascript Mongoose模型在init函数退出后立即消失,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,编辑 我想我已经发现了问题。。。 我试着在某个地方使用process.env.PWD,但除了Mongoose之外,它都能正常工作。删除了它的用法,一切都突然正常了。有人能解释一下原因吗? 结束编辑 启动时,我的应用程序会做一些事情,比如定义路线和设置猫鼬 /init/db.js module.exports = function () { const {url, options} = getCredentials(); mongoose.connect(url, options
我想我已经发现了问题。。。 我试着在某个地方使用process.env.PWD,但除了Mongoose之外,它都能正常工作。删除了它的用法,一切都突然正常了。有人能解释一下原因吗?
结束编辑 启动时,我的应用程序会做一些事情,比如定义路线和设置猫鼬 /init/db.js
module.exports = function () {
const {url, options} = getCredentials();
mongoose.connect(url, options);
// This requires the files that have the schemas in 'm
loadSchemas();
console.log(require('mongoose')); // Shows all models
};
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const User = new Schema({
username: {type: String, required: true, unique: true},
email: {type: String, required: true, unique: true},
registration_date: {type: Date, default: Date.now, required: true},
birthdate: {type: Date}
});
mongoose.model('User', User);
require(`${process.env.APP_DIR}/init/db`)();
console.log(require('mongoose')); // Not a single model in it
示例架构文件(user.js)
在/init/db.js
中,登录需要('mongoose')
仍然显示所有模型,并且可以访问,在该函数调用之后,登录require('mongoose')
会显示一个mongoose对象,就像刚刚创建的一样
app.js
module.exports = function () {
const {url, options} = getCredentials();
mongoose.connect(url, options);
// This requires the files that have the schemas in 'm
loadSchemas();
console.log(require('mongoose')); // Shows all models
};
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const User = new Schema({
username: {type: String, required: true, unique: true},
email: {type: String, required: true, unique: true},
registration_date: {type: Date, default: Date.now, required: true},
birthdate: {type: Date}
});
mongoose.model('User', User);
require(`${process.env.APP_DIR}/init/db`)();
console.log(require('mongoose')); // Not a single model in it
当正常启动应用程序时,这里没有问题,但是因为我也编写了DB单元测试,它会因为错误而崩溃
throw new mongoose.Error.MissingSchemaError(name);
^
MissingSchemaError: Schema hasn't been registered for model "User".
Use mongoose.model(name, schema)
您还需要从单元测试调用loadSchema。整个应用程序都是从单元测试加载和启动的,因为它是一个包含路由和单元测试的单一测试调用。我想我已经发现了问题。。。我试着在某个地方使用process.env.PWD,但除了Mongoose之外,它都能正常工作。删除了它的用法,一切都突然正常了。有人能解释一下原因吗?