Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬函数序_Node.js_Mongodb_Csv_Mongoose - Fatal编程技术网

Node.js 猫鼬函数序

Node.js 猫鼬函数序,node.js,mongodb,csv,mongoose,Node.js,Mongodb,Csv,Mongoose,我正在使用node.js将CSV表上的值上载到远程数据库 CSV表包含有关机构及其提供的服务的信息。每一行对应一个新的机构,除非机构信息为null,否则如果机构信息为null,则它只读取服务信息并将其添加到最后列出的机构中(这样,您可以为一个机构提供多个服务) 将此信息读入节点是很好的,它会以正确的顺序读取它并将其适当分离。我遇到的问题是使用mongoose上传值 新机构通过mongoose.save上传(因为它们是新条目),服务更新通过mongoose.update上传 新机构: if (na

我正在使用node.js将CSV表上的值上载到远程数据库

CSV表包含有关机构及其提供的服务的信息。每一行对应一个新的机构,除非机构信息为null,否则如果机构信息为null,则它只读取服务信息并将其添加到最后列出的机构中(这样,您可以为一个机构提供多个服务)

将此信息读入节点是很好的,它会以正确的顺序读取它并将其适当分离。我遇到的问题是使用mongoose上传值

新机构通过mongoose.save上传(因为它们是新条目),服务更新通过mongoose.update上传

新机构:

if (name != "" && name != lastName)
{
  console.log("New Establishment added")

  lastName  = name;

  var newEstab  = new establishment({
    name: name,
    location: { lat: lat, long: long },
    place_id: place_id,
    username: username,
    password: pass,
    details: { bio: bio,
              wait_time: wait,
              opening_monday: opening_monday,
              opening_tuesday: opening_tuesday,
              opening_wednesday: opening_wednesday,
              opening_thursday: opening_thursday,
              opening_friday: opening_friday,
              opening_saturday: opening_saturday,
              opening_sunday: opening_sunday,
              closing_monday: closing_monday,
              closing_tuesday: closing_tuesday,
              closing_wednesday: closing_wednesday,
              closing_thursday: closing_thursday,
              closing_friday: closing_friday,
              closing_saturday: closing_saturday,
              closing_sunday: closing_sunday
            },
    service: [{
      name: sname,
      price: sprice,
      time_taken: time_taken,
      service_category: scat,
    }]
  })
  ;



  newEstab.save( (err, finish) => {
    if (err) console.log("Error on Entry : " + err), reject(err)//; console.log("error" + err)
      else console.log("Establishment Uploade") //, resolve(finish)//; console.log("went through" + book)
    } )
 }
服务更新:

console.log("Service update on " + lastName)
//console.log("work with me: " + sname + " " + sprice + " " + time_taken + " " + scat);

    establishment.update(
      { name: lastName },

      {"$push" :
        {
          'service' : { 'name' : sname,
                        'price' : sprice,
                        'time_taken' : time_taken,
                        'service_category' : scat,
                      },
          }
      },
      // THE PROBLEM IS THE ORDER THEY"RE CARRIED OUT ^^^ PUSH HAPPENS BEFORE ESTABLISHMENT
      function (err, model)
      {
          new Promise((resolve, reject) => {
          if (err)
          {
            console.log("Error on Service update " + err)
            reject(err)
          } else {
            console.log("Successful Service update ")
            resolve(model)
          }
        })
      })
出于某种原因,mongoose总是在插入之前运行更新,这意味着它尝试更新不存在且无法完成操作的机构。update函数没有问题,就像它在正确上传后单独运行一样。只是mongoose在运行这些函数

下面是终端输出显示的屏幕截图,尽管在更新之前调用了insert函数,但它们的执行顺序不同。

如果有人能解释猫鼬为什么这样做,或者提供改变它的解决方案,我将非常感激


谢谢您的时间。

您的代码不清楚。您的代码类似于
newEstab.save(函数(){A});update(function(){B})?如果是这样,那么它应该像mongoose操作一样嵌套在
newEstab.save(function(){A;building.update(function(){B});})
中。如果您不喜欢嵌套,那么在帖子中使用.Images是很有用的,但是请确保没有它们的帖子仍然清晰。不要显示终端输出的屏幕截图,而是直接复制粘贴或在帖子中键入实际的tex。查阅