有没有办法取消 node.js 对 require 模块的缓存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法取消 node.js 对 require 模块的缓存相关的知识,希望对你有一定的参考价值。
可以尝试用javascript的delete语言特性试试,一般来说不需要释放对require模块的缓存,你的要求比较特别。 参考技术A require是nodejs根据commonjs的模块规则所产生的,而nodejs之所以能成为服务端语言的重要原因就是克服了js原有的模块机制缺失,
所以require是必需的。那如何清除缓存呢?
delete require.cache[require.resolve('你require的那个')];
即可本回答被提问者采纳
有没有办法在 node.js 中使用 Model.find() 查询和填充字段过滤器
【中文标题】有没有办法在 node.js 中使用 Model.find() 查询和填充字段过滤器【英文标题】:Is there any way to use Model.find() Querie with populated field filter in node.js 【发布时间】:2021-10-12 21:42:23 【问题描述】:我正在使用这样的 Model.find() 查询
const model = require("../../models/product");
module.exports = async(filters) =>
let data = Object.values(filters.data)[0]
let field = Object.keys(filters.data)[0];
const regex = new RegExp(escapeRegex(data), 'gi');
return await model.find( $or: [
[field]: regex ] ).populate("division_id").populate("type_id").populate("category_id").exec()
//$or:[ '_id':objId, 'name':param, 'nickname':param ]
function escapeRegex(text)
return text.replace(/[-[\]()*+?.,\\^$|#\s]/g, "\\$&");
;
过滤器
在过滤器中,我正在发送 data : name : "a"
这是给所有名称以“a”开头的产品,这很好!
但现在我想获得具有特定划分的过滤结果
响应仅包括特定的部门产品
产品架构
_id: mongoose.Schema.Types.ObjectId,
division_id: type: mongoose.Schema.Types.ObjectId, ref: 'Division', required: [true, "Product Division Id is required"] ,
name: type: String, required: [true, "Product Name is required"] ,
部门架构
_id: mongoose.Schema.Types.ObjectId,
name: type: String, required: "Division Name is required" ,
【问题讨论】:
【参考方案1】:尝试使用此处的示例:https://mongoosejs.com/docs/populate.html#query-conditions
所以我认为它应该是这样的:
return await model.find(
$or: [
[field]: regex // By the way, if it's the only query in $or, you don't need $or
],
.populate(
path: "division_id",
match: _id: <ObjectId>
)
.populate("type_id")
.populate("category_id")
.exec();
第一个 .populate
将被扩展一点以包含特定匹配。在那里,您可以传递_id
(例如,或name
,根据您的架构)来匹配特定的部门。
【讨论】:
感谢您的回复......但我仍然收到错误“无法读取 null 的属性 '_id'” @user16452247 这必须在其他行,因为我的代码没有可为空的对象以上是关于有没有办法取消 node.js 对 require 模块的缓存的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法取消 node.js 对 require 模块的缓存
有没有办法从 .js 文件自动安装 node.js 依赖项?
使用 Express/Node.js 和 Angular 处理取消的请求