使用node-csv和meteor-file将CSV导入到集合中

2023-12-02

现在已经挣扎了几个小时,尝试导入从客户端上传的 CSV流星文件并使用转换为 CSVnode-csv服务器端。我基本上需要用用户上传的 CSV 文件中的数据填充我的集合。

/server/filehandler.js:

Meteor.methods({
'uploadFile': function (file) {

  if(file.start === 0) {
    console.log(file.name);
    console.log(file.type);
    console.log(file.size);            
  }

  file.save('/home/russell/tmp',{});
  var buffer = new Buffer(file.data);
  CSV().from(
          buffer.toString(),
          {comment: '#', delimiter: ',', quote: ''} 
      )
        .to.array( function(data){
          //console.log(data);

          for(var row=0; row<data.length; row++) {
              console.log(data[row]);
             newRecord = {
                  'firstname': data[row][0],
                  'lastname': data[row][1],
                  'email': data[row][2],
                  'emailshort': data[row][3],
                  'emailmain': data[row][4],
                  'domain': data[row][5]
              };
              console.log(newRecord);
              reas.insert(newRecord); // *** _dynamic_meteor ERROR here!
          }
        } );

 } // uploadFile
});

console.log 告诉我 CSV 到数组的转换没问题。

收藏reas在 /lib/models.js 中设置为集合 - /lib 与 /server 和 /client 处于同一级别。

我尝试过在 Meteor.method() 之外有一个全局变量并将转换结果存储到其中,并且我也尝试过使用 Session.set(),但我似乎无法理解转换结果,在 method() 之外。

thanks.

更新 - 2013-10-11

我的 /libs/models.js 看起来像这样:

reas = new Meteor.Collection("RegisteredEmailAddresses");

/*checks to see if the current user making the request to update is the admin user */
function adminUser(userId) {
    var adminUser = Meteor.users.findOne({username:"admin"});
                return (userId && adminUser && userId === adminUser._id);
            }

reas.allow({
    insert: function(userId, doc){
                        return adminUser(userId);
                    },
    update: function(userId, docs, fields, modifier){
                        return adminUser(userId);
                    },
    remove: function (userId, docs){
                        return adminUser(userId);
                    }
});

尤里卡时刻?!

难道不应该是这样吗/lib不是/libs?也许reas没有及时定义?

更新于2013-10-09

如果我离开队伍

reas.insert(newRecord);

我收到下面的错误消息。如果我删除那行,我就不会。

错误信息:

W2036-20:56:29.463(1)? (STDERR) packages/mongo-livedata.js:1862
W2036-20:56:29.471(1)? (STDERR)         throw e;                                                              
W2036-20:56:29.475(1)? (STDERR)               ^
W2036-20:56:29.953(1)? (STDERR) Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.
W2036-20:56:29.958(1)? (STDERR)     at Object.Meteor.bindEnvironment (packages/meteor/dynamics_nodejs.js:60)
W2036-20:56:29.958(1)? (STDERR)     at null.<anonymous> (packages/meteor/helpers.js:108)
W2036-20:56:29.959(1)? (STDERR)     at MongoConnection.(anonymous function) [as insert] (packages/mongo-livedata/mongo_driver.js:491)
W2036-20:56:29.964(1)? (STDERR)     at Meteor.Collection.(anonymous function) [as insert] (packages/mongo-livedata/collection.js:448)
W2036-20:56:29.965(1)? (STDERR)     at app/server/server.js:37:20
W2036-20:56:29.966(1)? (STDERR)     at null.<anonymous> (/home/russell/.meteorite/packages/node-csv-npm/Dsyko/meteor-node-csv/01be0e3e834a4f033121cb3fcc92c2697741170d/.build/npm/node_modules/csv/lib/to.js:274:14)
W2036-20:56:29.967(1)? (STDERR)     at EventEmitter.emit (events.js:95:17)
W2036-20:56:29.971(1)? (STDERR)     at null.<anonymous> (/home/russell/.meteorite/packages/node-csv-npm/Dsyko/meteor-node-csv/01be0e3e834a4f033121cb3fcc92c2697741170d/.build/npm/node_modules/csv/lib/index.js:214:17)
W2036-20:56:29.972(1)? (STDERR)     at EventEmitter.emit (events.js:92:17)
W2036-20:56:29.975(1)? (STDERR)     at Transformer.end (/home/russell/.meteorite/packages/node-csv-npm/Dsyko/meteor-node-csv/01be0e3e834a4f033121cb3fcc92c2697741170d/.build/npm/node_modules/csv/lib/transformer.js:241:17)

我想找到一种不会将整个 CSV 文件加载到内存中的解决方案,以用于大型数据集。这是我的解决方案,它使用 Meteor.bindEnvironment 以及 node-csv 将 CSV 文件解析为 Meteor 集合。

感谢 #meteor 上的人们的帮助。

var csv = Meteor.require('CSV'); 
var fs = Meteor.require('fs');
var path = Npm.require('path');

function loadData() {
  var basepath = path.resolve('.').split('.meteor')[0];

  csv().from.stream(
    fs.createReadStream(basepath+'server/data/enron_data.csv'),
      {'escape': '\\'})
    .on('record', Meteor.bindEnvironment(function(row, index) {
      Emails.insert({
        'sender_id': row[0]
        // etc.
        })
      }, function(error) {
          console.log('Error in bindEnvironment:', error);
      }
    ))
    .on('error', function(err) {
      console.log('Error reading CSV:', err);
    })
    .on('end', function(count) {
      console.log(count, 'records read');
    });

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用node-csv和meteor-file将CSV导入到集合中 的相关文章

  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 如何在不加载到内存的情况下对大型 csv 文件进行排序

    我有 20GB csv 文件 如下所示 CallId MessageNo Information Number 1000 1 a 2 99 2 bs 3 1000 3 g 4 66 2 a 3 20 16 3 b 1000 7 c 4 99
  • 解析 Google 表格中制表符分隔的文本文件

    我在网上有一个 txt 文件 其中包含制表符分隔值 TSV CSV 如下所示 产品IDtabColortabPricetabQuantity项目1tabRed tab 5 2 tab5项目2tabBlue tab 7 5 tab10 我使用
  • 使用 tortoiseHg 为 Mercurial 存储库导入具有冲突更改的补丁

    我已成功导入补丁 没有发生冲突的更改 但是 当我尝试导入具有冲突更改的补丁时 它会抛出一个错误 提示 Hunk 1 FAILED at 11 没有合并更改的选项 还有其他方法可以实现此目的吗 失败的帅哥必须手动修复 应该有一个 rej 文件
  • CSV 提供的数据源第一列中存在奇数字符

    我有一个 CSV 文件 已添加到 Visual Studio 单元测试项目中 它有七列 如下所示 assessmentitemid reviewer1 reviewer2 reviewer3 reviewer4 reviewer5 revi
  • Java导入语句语法

    这是一个简单的问题 但我真的很困惑 我试图找到一个重复的 并用谷歌搜索 但当我找不到令人满意的答案时 我感到更惊讶 import java util Scanner 在这份声明中 Scanner是班级 util是包的名称 What is j
  • 如何在 Flutter 移动端、网页端和窗口端添加条件导入?

    我有 flutter 应用程序 它为每个平台 移动 网络 窗口 使用不同的 webview 插件 虽然我有能力import平台基于web and mobile 我无法导入 Windows 版本 如果不是移动或网络 我尝试添加其他条件 但它需
  • Spark SQL如何读取压缩的csv文件?

    我尝试过使用apispark read csv读取带有扩展名的压缩 csv 文件bz or gzip 有效 但在源代码中我没有找到任何可以声明的选项参数codec type 即使在这个link https github com databr
  • 使用 silverlight 4 和 c# 创建 CSV 下载

    我正在努力寻找示例或代码 以便能够在 silverlight 中创建 CSV 或文本文件作为可下载链接 我已经在 ASP net 中完成了此操作 但无法找到使用 Silverlight 的方法 我在旋转轮子吗 或者我应该创建一个 ASP 页
  • Firestore OncompleteListener [重复]

    这个问题在这里已经有答案了 我想看看这段代码的执行有什么错误 当我编译它时 它只返回 log 1 3 2 的值 并且我希望 log2 在 3 之前 Log d 1 antes de validar DocumentReference doc
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • 从 csv 文件中读取奇数行

    这看起来相当简单 我只需要从 R 中的数据文件中读取奇数行并创建一个新的数据框 我怎样才能实现这个目标 read csv filename csv c TRUE FALSE 怎么运行的 功能read csv用于读取整个文件并返回包含所有行的
  • 将 Excel 读取到从第 5 行开始并包括标题的 Python 数据框

    我有一个 Excel 工作簿 它在打开时运行一些 vba 刷新数据透视表并执行其他一些操作 然后我希望将数据透视表刷新的结果导入到 python 中的数据框中以进行进一步分析 import xlrd wb xlrd open workboo
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 如何在 iPhone 应用程序中使用正则表达式以 , (逗号)分隔字符串

    我必须读取包含三列的 csv 文件 在解析 csv 文件时 我得到了这种格式的字符串克里斯托弗 巴斯 为心爱的国家哭泣 期末论文 电子邮件受保护 cdn cgi l email protection 我想将三列的值存储在一个数组中 所以我使
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 为什么java中LinkedList没有initialCapacity?

    我想知道为什么LinkedList没有initialCapacity 我知道什么时候使用ArrayList什么时候LinkedList 定义集合最终大小的好习惯是 List
  • 太多的导入正在垃圾邮件我的 Java 代码

    在我的项目中我有一个shapes包含我为图形程序设计的形状的包 例如 长方形 and Circle 我还有一两个同名的软件包java awt类 现在 由于我不想重命名代码库中的每个类 为了显示我的源文件 当我声明一个新的矩形时 我需要执行以
  • WeakHashMap 和强引用值

    Javadocs 说 当一个密钥被丢弃时 它的条目是有效地从地图上删除 但除非有另一个线程偶尔删除这样的Map Entry条目 值对象不会被映射强引用吗 但由于没有这样的线程运行 只有get方法调用可以删除此类条目 一次一个 我几乎总是使用

随机推荐

  • 核心数据 keyPathsForValuesAffectingValueForKey 仅调用关系,而不调用属性

    我正在使用核心数据来建模一个具有属性和关系的实体 我想让其中一个属性依赖于另外两个关系 核心数据常见问题解答和其他几个示例使用 NSSet keyPathsForValuesAffectingValueForKey NSString key
  • 取消用户定义函数中先前的操作

    是否可以取消用户定义函数中之前的操作 例如 CREATE OR REPLACE FUNCTION transact test RETURNS BOOLEAN AS BEGIN UPDATE table1 SET UPDATE table2
  • 如何从android中的sqlite数据库中检索数据并将其显示在TextView中

    我正在学习安卓 我有一个问题 但我无法解决它 我想从现有数据库中检索数据并将其显示在TextView单击按钮后 My code 数据库助手看起来像这样 public class DataBaseHelper extends SQLiteOp
  • 卷积中的2D步幅是什么意思?

    我知道当步幅只是一个整数时它的含义是什么 通过这一步你应该对图像应用过滤器 但是关于 1 1 或者甚至更多维度的进步 The stride定义滤波器如何沿着输入图像 张量 移动 没有什么可以阻止你沿着不同的轴以不同的方式大步前进 例如 st
  • 如何在 Mac OS X 中监听应用程序启动事件?

    我写了一个AppleScript安装一个SparseBundle图像 我希望它准确地执行Time Machine发射 现在 我定期检查 Time Machine 是否正在运行AppleScript using on idle陈述 on id
  • 带有操作栏和选项卡的 Android 布局

    我是 Android 新手 需要您的建议 我想要一个带有操作栏的活动 我还需要选项卡 但不是操作栏中的选项卡 和操作栏中的下拉列表进行导航 当我点击例如第一个选项卡时 操作栏中的导航列表应填充数据 当秒选项卡时 导航列表应填充其他数据等 当
  • Javascript 错误:JupyterLab 中未定义 IPython

    我有最新 更新的 Anaconda 包 每次我尝试使用 python 3 6 6 绘制某些内容时 我都会在 JupyterLab 中收到以下错误 JavaScript 错误 IPython 未定义 当我使用 ipython 内核在 Spyd
  • 无法解决“c 不是构造函数”错误

    我正在尝试使用 ExtJS 构建一个非常非常基本的 概念验证 应用程序 但我遇到了困难 我想要的只是两个网格从远程 JSON 文件获取数据 但无论我做什么 我都会不断收到主题中的错误 这是我的简单代码 app js Ext Loader s
  • Azure 函数在大型 TIF 文件上调用 Image.FromStream 抛出“参数无效”

    我正在尝试在 Azure 函数中处理多页 TIF 该函数由 blob 存储的更改触发 当触发器运行时 它会调用 function loadFile Stream mpTif Bitmap pageOnes Bitmap Image From
  • 将模块版本作为命令行参数发送给 SBT

    我正在使用 TeamCity 运行 bash 脚本 该脚本利用 SBT Native Packager 将映像发布到 Docker bash 脚本的 sbt 部分如下所示 sbt DdockerRepository repo Dpackag
  • 更新 VS2008 Crystal Reports 上的数据集架构

    我正在使用 Visual Studio 2008 中 Crystal Reports 的内置模块创建一个报告 为此我添加了一个包含多个数据表的数据集 就目前而言 数据表具有一定数量的字段 这些字段将来可能会增长 因此下一个更新我的报告的人将
  • event.currentTarget 的实际用途?

    非常清楚的是event target处理发起事件的 DOM 元素 And event delegateTarget提供我们实际附加监听器的 DOM 元素 但我很难理解我什么时候会使用 事件 currentTarget 查看显示此示例的 jQ
  • 并行 ForEach 与 SQL 插入 C#

    我有一个如下所示的对象 但数据量很大 我们观察到插入到我们的 SQL 数据库中需要很长时间 因为我们使用普通的foreach 主要思想是插入每个部门并获取生成的身份号码 然后插入分配有该部门 ID 的嵌套员工
  • 按行删除每行列子集中的重复项,按行仅保留第一个副本

    我有以下 pandas 数据框 超过 700 万行 import pandas as pd data date 2023 02 22 2023 02 21 2023 02 23 x1 descx1a descx1b descx1c x2 A
  • angular2firebase - 使用 Angular 6 的多个实例

    我正在升级到Angular 6 using AngularFire2 我的应用程序引用了 2Firebase项目使用这样的代码来创建数据库引用 public initFirebaseApp config FirebaseAppConfig
  • 寻找实时网络服务器分析包[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我是一家县医院教育科的程序员 我希望能够在只能在内部访问的 IIS6 Web 服务器上查看一些实时统计数据 我正在寻找类似于 1and1 com 为
  • 圆角包含在小分区中的大图像的侧面在 Chrome 中不起作用

    我正在尝试用圆角化背景图像的侧面border radius财产 这是我的场景 我将一个大图像放在一个小分区中作为背景 并将溢出隐藏起来 现在我需要对小部门进行四舍五入 我成功绕过了小师 但图像的角不是圆角的 HTML div class v
  • 如何自动调整 iFrame 的大小? [复制]

    这个问题在这里已经有答案了 可能的重复 根据内容调整 iframe 的大小 我正在加载 iFrame 并希望父级根据 iFrame 内容的高度自动更改高度 简而言之 所有页面都属于同一域 因此我不应该遇到跨站点脚本问题 在任何其他元素上 我
  • Keras - 绘制训练、验证和测试集准确性

    我想绘制这个简单神经网络的输出 model compile loss binary crossentropy optimizer adam metrics accuracy history model fit x test y test n
  • 使用node-csv和meteor-file将CSV导入到集合中

    现在已经挣扎了几个小时 尝试导入从客户端上传的 CSV流星文件并使用转换为 CSVnode csv服务器端 我基本上需要用用户上传的 CSV 文件中的数据填充我的集合 server filehandler js Meteor methods