node.js - 为什么模块大部分时间都返回一个空白对象?
问题描述
我试图弄清楚为什么我的模块没有正确加载。这是一个猫鼬模型,但即使只返回一个字符串,有时也会返回空对象,所以它似乎与节点有关。
文章/模型/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 模型都具有相互引用的功能,因为它们都需要。我不明白为什么他们不能,或者如何避免(仍然保持我的代码干净)。
解决方案
推荐阅读
- r - 用于替换 1 之前出现的每个零的 R 逻辑
- hibernate - 具有hazelcast实现的hibernate二级缓存,集合元素不是从缓存中检索而是从数据库中检索
- exp - 使用 fitdistrplus 包拟合错误代码为 100 的指数分布
- assembly - movsbq 和这个添加行做什么?
- python - 模板标签不尊重传递的上下文变量
- python - 如何逐行编辑文件并根据条件将文本插入文档?
- python - 为什么 VSCODE 不接受 Python 导入语句而 Pycharm 是?
- jena - org.apache.jena.shared.NoReaderForLangException:找不到阅读器:NT
- reactjs - 使用 CubeJs 从数据库中获取实时数据
- reactjs - 使用 ant design react 在扩展行中搜索