替换Node.js中createReadStream中的数据

替换Node.js中createReadStream中的数据,node.js,Node.js,我不确定我问的问题是否正确。。。所以请不要攻击我 我正在为一种跟踪实现创建自己的异步回调库。用户必须在其站点上安装包含唯一帐号的代码。想想谷歌分析 库调用到达我的节点服务器,并在查询参数中传递帐户id 节点使用分析库进行响应,因此可以在用户站点上调用各种跟踪功能 我的问题是,如何修改基于查询参数流式返回到用户页面的静态跟踪库?例如,一旦从查询字符串中读取了帐户ID,我将进行DB查找,以查找库中特定于该用户的一些值,并希望适当修改库中的特定函数 我正在通过以下方式从本地服务器读取静态文件: fs.

我不确定我问的问题是否正确。。。所以请不要攻击我

我正在为一种跟踪实现创建自己的异步回调库。用户必须在其站点上安装包含唯一帐号的代码。想想谷歌分析

库调用到达我的节点服务器,并在查询参数中传递帐户id

节点使用分析库进行响应,因此可以在用户站点上调用各种跟踪功能

我的问题是,如何修改基于查询参数流式返回到用户页面的静态跟踪库?例如,一旦从查询字符串中读取了帐户ID,我将进行DB查找,以查找库中特定于该用户的一些值,并希望适当修改库中的特定函数

我正在通过以下方式从本地服务器读取静态文件: fs.createReadStream(“./file.js”)

如何修改该文件以替换其中的某些值

或者我应该在启动时将文件读入内存中的对象,然后通过响应对象简单地写出修改后的数据吗?

您可以简单地使用eco或ejs模板来实现这一点,但只是为了有一个想法,或者如果您愿意自己制作,我认为您应该基于
文件.js
创建一个模板,然后使用一组正则表达式编写代码中特定于用户的部分,其中包含corersponding数据

例如:

template.js

var get\u user=function(){
返回“Hi%%USER\u NAME%%”
}
然后req.send()` template.js的内容替换了如下内容:

var result=缓存的模板数据;
如果(!结果){
fs.readFile(“./template.js”,函数(err,data){
结果=缓存的\模板\数据=数据;
如果(!err){
结果=结果.替换(/%%%USER\u NAME%%/g,USER.NAME)
res.send(结果);
}否则{
//真糟糕
res.send({error:true},500);
}
})
}否则{
结果=结果.替换(/%%%USER\u NAME%%/g,USER.NAME)
res.send(结果);
}
更新


考虑尽可能地缓存…

我建议按照您最后的建议执行—将文件读入内存,在内存中进行修改,然后将修改后的文件发送出去。您的意思是在每次请求时将文件读入内存,还是只需一次,然后在响应时对其进行修改?我喜欢这样,但不是有一些固有的问题吗“错误的处理方式”为每个响应将文件读入内存,以及createReadStream要修复的内容?该文件只能读取一次(或每次修改模板文件时)它的内容会为每个请求进行替换,缓存每个用户的结果,并且仅在用户数据更新时重建结果以获得更好的性能。修改示例以添加模板内容的缓存。但请记住,这只是为了说明如何才能做到这一点。您不需要重新发明轮子、使用或任何其他酷炫的模板e我不喜欢使用模板引擎。太多的开销和其他我不需要的功能。如果你要为每个用户缓存另一个问题:你现在在内存中存储了N个用户版本的文件。这似乎是个坏主意,不是吗?顺便说一句,谢谢你的关注!非常感谢这次讨论。