我试图弄清楚为什么我的模块没有正确加载。这是一个猫鼬模型,但即使只返回一个字符串,有时也会返回空对象,所以它似乎与节点有关。
文章/模型/articles.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var articleSchema = new Schema({
title: String,
slug: String,
author: { type: mongoose.Schema.ObjectId, required: true},
likes: {type: Number, default: 0},
comments: {type: Number, default: 0},
outro: String,
metadescription: String,
metaimage: String,
},{timestamps: true});
//queries
articleSchema.statics.new = require('../queries/new.js');
articleSchema.statics.get = require('../queries/get.js');
articleSchema.statics.single = require('../queries/single.js');
articleSchema.statics.update = require('../queries/update.js');
articleSchema.statics.delete = require('../queries/delete.js');
//articleSchema.statics.updateCommentCount = require('../queries/updateCommentCount.js');
var model = mongoose.model('articles', articleSchema);
//save to exports
module.exports = 'hi';
在这里我尝试称它为:
var Articles = require('../../articles/models/articles.js');
console.log('a',require('../../articles/models/articles.js'));
console.log('b',Articles);
setTimeout(()=>{
console.log('c',require('../../articles/models/articles.js'));
console.log('d',Articles);
},1000);
但这就是它的输出:
a: {}
b: {}
c: hi
d: {}
为什么会这样?空物体从何而来?它显然找到了正确的文件,因为没有错误。
如果我将 module.exports = 'hi' 移动到 article.js 的顶部,那么我会得到 a、b、c 和 d 的正确“hi”。但我试图让它返回在该文档中创建的模型对象。
我无法弄清楚问题出在哪里。
编辑:这似乎是一个循环依赖问题。Articles 和 Comments 模型都具有相互引用的功能,因为它们都需要。我不明白为什么他们不能,或者如何避免(仍然保持我的代码干净)。