0
一直在我的頭撞在牆上,所以任何幫助將不勝感激。使用MongooseJS,我正在做一個Model.find,然後遍歷這些結果並執行findAndUpdate。MongooseJS findAndUpdate內查找循環
(基本上,從MongooseJS獲取URL的列表,「ping」每個URL以獲得狀態,然後用狀態更新DB)。
架構
var serverSchema = new Schema({
github_id: { type: String, required: true },
url: { type: String, required: true },
check_interval: Number,
last_check: {
response_code: Number,
message: String,
time: Date
},
created_at: Date,
updated_at: Date
})
這裏有一個代碼片段:
// Doesn't work
Server.find(function (err, items) {
if (err) return console.log(err)
items.forEach(function (item) {
var query = {url: item.url}
Server.findOneAndUpdate(query, {updated_at: Date.now()}, function (err, doc) {
if (err) return console.log(err)
console.log(doc)
})
})
})
// Works!
var query = {url: 'https://google.com'}
Server.findOneAndUpdate(query, {updated_at: Date.now()}, function (err, doc) {
if (err) return console.log(err)
console.log(doc)
})
調試上,我可以看到.find()越來越我想要的數據。但是,似乎他在.find()中找到了OneAndUpdate(永遠不會運行)(item.url設置正確),並且我沒有收到任何錯誤,它只是不運行。
任何幫助將非常感激。
我感謝你的幫助。我確實需要循環查找列表,我把你的代碼,並且它仍然不運行更新(通過調試我看到.find()運行,但不是.update) –
你確定這個項目'''forEach''裏面的'''item.url''給出了期望的值...還有'''''''''''''''''什麼是架構'你可以請用模式更新問題嗎? –
添加了模式。是的,如果我在Server.findOneAndUpdate之前放置一個console.log(查詢),它會正確輸出。 –