Sails js批量上传并插入MongoDB

Sails js批量上传并插入MongoDB,mongodb,sails.js,waterline,Mongodb,Sails.js,Waterline,嗨,在我的Sailsjs应用程序中,有一个批量上传功能,管理员可以上传csv文件。我使用csv解析来解析csv内容 现在我想将数据插入Mongo DB,其中每行都有车辆信息和测试信息。这两个模型具有一对多关系。我不知道如何将它们插入数据库。下面是我插入车辆的代码 下面是一个代码示例,我想在创建车辆模型后创建车辆测试模型,但我无法访问车辆以获取车辆测试模型的信息 attributes: { vehicleTested :{ modal :'Vehicle', required:tru

嗨,在我的Sailsjs应用程序中,有一个批量上传功能,管理员可以上传csv文件。我使用csv解析来解析csv内容

现在我想将数据插入Mongo DB,其中每行都有车辆信息和测试信息。这两个模型具有一对多关系。我不知道如何将它们插入数据库。下面是我插入车辆的代码

下面是一个代码示例,我想在创建车辆模型后创建车辆测试模型,但我无法访问车辆以获取车辆测试模型的信息

 attributes: {


vehicleTested :{
  modal :'Vehicle',
  required:true
},
车型

attributes: {
  make: {
    type: "string",
    required: true

  },


  tests :{
    collection: 'VehicleTest',
    via : 'vehicleTested'
  },
向量测试模型

 attributes: {


vehicleTested :{
  modal :'Vehicle',
  required:true
},
下面是函数中的代码行,读取文件并对其进行解析

 var parse = require('csv-parse');
var fs = require("fs")
var createdVehicle =[];
var stream = files[0].fd;

fs.readFile(stream, 'utf8', function (err, data) {
  // Print the contents of the file as a string here
  // and do whatever other string processing you want

  parse(data, {columns: true,delimiter:'|'}, function(err, output){


    if(output.length>0)
    {
      for (var i = 0, len = output.length; i < len; i++) {

        var vehicle_TestInfo  = output[i];
        //console.log(vehicle_TestInfo);
        //
        Vehicle.create({make : vehicle_TestInfo.make,model:vehicle_TestInfo.model,year:vehicle_TestInfo.year ,engineFuel:vehicle_TestInfo.engineFuel,obdZone:vehicle_TestInfo.obdZone,generation:vehicle_TestInfo.generation,protocol:vehicle_TestInfo.protocol,onStar:vehicle_TestInfo.onStar}).exec(function(err,vehCreated){

          console.log(vehCreated);
          //VehicleTest.Create({vehicleTested:vehCreated._id,overAllComp:vehicle_TestInfo.overAllComp,deviceGeneration:vehicle_TestInfo.deviceGeneration}).exec(function(err,testCreated){
          //
          //  console.log(testCreated);
          //
          //})


      });
    }
    }
var parse=require('csv-parse');
var fs=需要(“fs”)
var createdVehicle=[];
var stream=文件[0].fd;
读取文件(流'utf8',函数(错误,数据){
//在此处以字符串形式打印文件内容
//并执行您想要的任何其他字符串处理
解析(数据,{columns:true,分隔符:'|'},函数(err,输出){
如果(输出长度>0)
{
对于(变量i=0,len=output.length;i
我就是这样实现的

 for (var i = 0, len = output.length; i < len; i++) {

        var vehicle_TestInfo  = output[i];
        //console.log(vehicle_TestInfo);
        //
       Vehicle.create({make : vehicle_TestInfo.make,model:vehicle_TestInfo.model,year:vehicle_TestInfo.year ,trim:vehicle_TestInfo.trim ,engineFuel:vehicle_TestInfo.engineFuel,obdZone:vehicle_TestInfo.obdZone,generation:vehicle_TestInfo.generation,protocol:vehicle_TestInfo.protocol,onStar:vehicle_TestInfo.onStar,
       tests : {deviceGeneration:vehicle_TestInfo.deviceGeneration,overAllComp:vehicle_TestInfo.overAllComp,isTested:vehicle_TestInfo.isTested,testingInferred:vehicle_TestInfo.testingInferred,vinRead:vehicle_TestInfo.vinRead,
         odoRead:vehicle_TestInfo.odoRead,pidRead:vehicle_TestInfo.pidRead,doorLocked:vehicle_TestInfo.doorLocked,SeatBelt:vehicle_TestInfo.seatBelt,fuelLevel:vehicle_TestInfo.fuelLevel,issueType:vehicle_TestInfo.issueType,degreeOfERGIntr:vehicle_TestInfo.degreeOfERGIntr,dataLoggerModel:vehicle_TestInfo.dataLoggerModel,
         numberOfVehicle:vehicle_TestInfo.numberOfVehicle,remarks:vehicle_TestInfo.remarks}}).exec(function(err,vehCreated){

          if(err && err.originalError && err.originalError.code===50)
          {
              Vehicle.update({id:vehCreated.id})

          }
         /// console.log(vehCreated);
         // vehCreated.tests.add({})
          createdVehicle.push(vehCreated);



      });
for(变量i=0,len=output.length;i
我就是这样实现的

 for (var i = 0, len = output.length; i < len; i++) {

        var vehicle_TestInfo  = output[i];
        //console.log(vehicle_TestInfo);
        //
       Vehicle.create({make : vehicle_TestInfo.make,model:vehicle_TestInfo.model,year:vehicle_TestInfo.year ,trim:vehicle_TestInfo.trim ,engineFuel:vehicle_TestInfo.engineFuel,obdZone:vehicle_TestInfo.obdZone,generation:vehicle_TestInfo.generation,protocol:vehicle_TestInfo.protocol,onStar:vehicle_TestInfo.onStar,
       tests : {deviceGeneration:vehicle_TestInfo.deviceGeneration,overAllComp:vehicle_TestInfo.overAllComp,isTested:vehicle_TestInfo.isTested,testingInferred:vehicle_TestInfo.testingInferred,vinRead:vehicle_TestInfo.vinRead,
         odoRead:vehicle_TestInfo.odoRead,pidRead:vehicle_TestInfo.pidRead,doorLocked:vehicle_TestInfo.doorLocked,SeatBelt:vehicle_TestInfo.seatBelt,fuelLevel:vehicle_TestInfo.fuelLevel,issueType:vehicle_TestInfo.issueType,degreeOfERGIntr:vehicle_TestInfo.degreeOfERGIntr,dataLoggerModel:vehicle_TestInfo.dataLoggerModel,
         numberOfVehicle:vehicle_TestInfo.numberOfVehicle,remarks:vehicle_TestInfo.remarks}}).exec(function(err,vehCreated){

          if(err && err.originalError && err.originalError.code===50)
          {
              Vehicle.update({id:vehCreated.id})

          }
         /// console.log(vehCreated);
         // vehCreated.tests.add({})
          createdVehicle.push(vehCreated);



      });
for(变量i=0,len=output.length;i
Vehicle create(车辆创建)函数回调时,您如何没有车辆信息?除了拼写错误外,代码似乎没有问题。您能否澄清一下无法访问车辆是什么意思?当您在Vehicle create(车辆创建)函数回调时,您如何没有车辆信息?除了拼写错误,代码似乎很好。你能澄清一下你说的不能进入车辆是什么意思吗?