首先,我是 Node.js 和 MongoDB 的新手。我有一个关于工作的网络应用程序的想法,我目前正在研究。它涉及将数据分配给数据库中的代表,然后在应用程序中访问该数据。
我必须使用的数据在 Excel 文件中。我能够获取该 Excel 文件并从中创建一个 CSV 文件以导入到 MongoDB。我的问题是,我有多个与个人代表相关的机会。我试图弄清楚如何以一种可以导入此 CSV 文件的方式为我的应用程序设置数据库,它会将代表的所有数据保存到数据库中的特定代表。
下面是一个数据示例:
代表姓名,Opp ID,Opp 名称,先前金额,金额
代表 1,1234561,Opp 1,10000,8000
代表 1,1234562,Opp 2,15000,9000
代表 2,1234563,Opp 3,20000,10000
代表 1,1234564,Opp 4,25000,11000
代表 2,1234565,Opp 5,30000,12000
基本上,我希望能够以这种格式导入 csv 文件,在 node.js 中有一个模型,该模型将支持此导入,然后能够为应用程序中的每个代表提取数据。例如,所有代表的概览将显示如下内容:
Rep 1 将有 3 个 Opps 出现,Rep 2 将有 2 个 Opps 出现
这甚至可能吗?我会以错误的方式解决这个问题吗?有没有更好的方法来做到这一点?
任何帮助指导我的提示、技巧、建议或示例都会很棒。
最佳答案
由于您似乎熟悉 ORM 模式,我建议您使用 "mongoose" module 。虽然我猜想你会在 NodeJS 和 Mongo 上有一个巨大的学习曲线来制作一个可靠的应用程序。
这是一个可以帮助您入门的工作示例:
#! /usr/bin/node
var mongoose = require('mongoose');
mongoose.connect('localhost', 'test');
var fs = require('fs');
var lineList = fs.readFileSync('mytest.csv').toString().split('\n');
lineList.shift(); // Shift the headings off the list of records.
var schemaKeyList = ['RepName', 'OppID', 'OppName', 'PriorAmount', 'Amount'];
var RepOppSchema = new mongoose.Schema({
RepName: String,
OppID: String,
OppName: String,
PriorAmount: Number,
Amount: Number
});
var RepOppDoc = mongoose.model('RepOpp', RepOppSchema);
function queryAllEntries () {
RepOppDoc.aggregate(
{$group: {_id: '$RepName', oppArray: {$push: {
OppID: '$OppID',
OppName: '$OppName',
PriorAmount: '$PriorAmount',
Amount: '$Amount'
}}
}}, function(err, qDocList) {
console.log(util.inspect(qDocList, false, 10));
process.exit(0);
});
}
// Recursively go through list adding documents.
// (This will overload the stack when lots of entries
// are inserted. In practice I make heavy use the NodeJS
// "async" module to avoid such situations.)
function createDocRecurse (err) {
if (err) {
console.log(err);
process.exit(1);
}
if (lineList.length) {
var line = lineList.shift();
var doc = new RepOppDoc();
line.split(',').forEach(function (entry, i) {
doc[schemaKeyList[i]] = entry;
});
doc.save(createDocRecurse);
} else {
// After the last entry query to show the result.
queryAllEntries();
}
}
createDocRecurse(null);
您在“mytest.csv”中的数据:
Rep Name,Opp ID,Opp Name,Prior Amount,Amount
Rep 1,1234561,Opp 1,10000,8000
Rep 1,1234562,Opp 2,15000,9000
Rep 2,1234563,Opp 3,20000,10000
Rep 1,1234564,Opp 4,25000,11000
Rep 2,1234565,Opp 5,30000,12000
关于node.js - 将多个条目从 Node.js 应用程序的 CSV 文件导入到 MongoDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14203108/