2013-03-30 51 views
2

到目前爲止我還沒有找到答案(這兩個都是我自己的努力,也是在線)。對記錄的更新沒有在mongo數據庫中保存(nodejs + mongo)

這是一個NodeJS代碼片段,並在後端使用mongodb。

在代碼中,我迭代(mongo)集合並更新每條記錄中的特定字段。

我無法堅持更改記錄到數據庫。

代碼: -

var mongoose = require('mongoose') 
    ; 

var Centers = mongoose.model('centers', new mongoose.Schema({ 
    "ChestClinic": String, 
    "TestCenterName": String, 
    ... 
    "loc": { 
     "type": { 
     "lon": Number, 
     "lat": Number 
    }, 
    "index": '2d' 
    } 
}); 

mongoose.connect("mongodb://localhost/tblabsdb"); 

Centers.find({}, function(err, recs) { 
    var me = this 
     ; 
    async.forEachSeries (recs, function(rec, callback) { 
     var loc = { lon: 100, lat: 100 }; 
     rec.setValue ('loc', loc); 
     rec.save (function (err, rec) { 
      if (!err) { 
       console.log(rec); 
      } else { 
       console.log ('Error while saving'); 
      } 
      callback(); 
     }); 
    }, function(err) { 
     console.log ('\ncomplete'); 
     process.exit(); 
    }); 
}) 

當我使用蒙戈命令打開外殼這個數據庫,我看到了「祿」的值(而不是100,100)仍爲0,0。

欣賞任何修復它的建議。

由於 海軍

回答

3

loc是混合型字段。當你改變這些,貓鼬需要被告知該領域已經改變保存前:

rec.setValue('loc', loc); 
rec.markModified('loc'); 
rec.save(...); 

這是爲什麼is explained here

+0

當你試圖在沒有承諾的情況下在另一個內部執行一個查詢時,它也可能是關閉的問題。 –