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