2013-01-19 76 views
2

嘗試一次性學習Meteor框架以及coffeescript/node。一直在使用一個簡單的文件上傳程序,利用onloadend。當FileReader onloadend事件函數被調用時,我嘗試確定文件是否已經存在,如果是這樣,我用新的文件數據和版本進行更新。Collection.update提供服務器錯誤

該代碼適用於插入但不更新。有人可以幫忙嗎?我已經發布到流星談話W/O答案,因爲我懷疑它的週末(當我做了我的大部分實驗)。

代碼片段...

file_reader.onloadend = ((file_event) -> 
    (event) -> 
     f_filename = escape file_event.name 
     version = 0 
     f_record = null 

     f_record = doc_repo.findOne { name: f_filename } 

     if f_record && f_record.name 
      doc_repo.update 
      name: f_filename 
      , 
      $set: 
       version: 10 
     else 
      doc_repo.insert 
      name: f_filename 
      data: event.target.result 
      version: 0 
    )(file_obj) 

錯誤

Exception while invoking method '/documents/update' TypeError: Cannot read property 'toBSON' of undefined 
    at Function.calculateObjectSize (/usr/local/meteor/lib/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:210:12) 
    at BSON.calculateObjectSize (/usr/local/meteor/lib/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:1463:15) 
    at UpdateCommand.toBinary (/usr/local/meteor/lib/node_modules/mongodb/lib/mongodb/commands/update_command.js:67:20) 
    at Connection.write (/usr/local/meteor/lib/node_modules/mongodb/lib/mongodb/connection/connection.js:138:40) 
    at __executeInsertCommand (/usr/local/meteor/lib/node_modules/mongodb/lib/mongodb/db.js:1837:14) 
    at Db._executeInsertCommand (/usr/local/meteor/lib/node_modules/mongodb/lib/mongodb/db.js:1912:7) 
    at Collection.update (/usr/local/meteor/lib/node_modules/mongodb/lib/mongodb/collection.js:445:13) 
    at app/packages/mongo-livedata/mongo_driver.js:178:16 
    at Db.collection (/usr/local/meteor/lib/node_modules/mongodb/lib/mongodb/db.js:507:44) 
    at _Mongo._withCollection (app/packages/mongo-livedata/mongo_driver.js:51:13) 

回答

1

它看起來像蒙戈沒有得到它需要做更新的第二個參數。因此,在常規的JavaScript它期待這樣的:

collection.update({..selector..}, { .. modifier }); 

所以我想嘗試把一些大括號圍繞修改的對象,像這樣:

doc_repo.update 
    name: f_filename, 
    { 
    $set: 
     version: 10 
    } 
相關問題