2014-11-16 185 views
0

我在周末玩弄node.js和mongo.db。此刻,我正在尝试更新集合中的记录。更新mongodb收集记录

当调用archiveuser函数时,我在developertools控制台中得到'加载资源失败:net :: ERR_EMPTY_RESPONSE'。我正在使用与archiveuser功能相似的片段来删除用户,并且此功能完美无缺。我不明白为什么现在失败了。

我写的这个代码片段进行users.js之内的更新:

router.put('/updateuser/:id', function(req, res) { 
    var db = req.db; 
    var userToUpdate = req.params.id; 

    db.userlist.update({"_id" : userToUpdate}, 
     { 
      $set:{'archived':'1'} 
     }) 
}); 

正在被从global.js叫这个函数:

function archiveUser(event) { 
    $.ajax({ 
     type: 'UPDATE', 
     url: '/users/updateuser/' + $(this).attr('rel') 
    }).done(function(response) { 

     // Check for a successful (blank) response 
     if (response.msg === '') { 
      alert('Success'); 
     } 
     else { 
      alert('Error: ' + response.msg); 
     } 
    }); 
}; 

如果我是使用php与MySQL我会运行更新查询,类似于此。

UPDATE userlist 
SET archived='1' 
WHERE id=$usertodelete; 

任何帮助深表感谢

托尼

+0

您的代码看起来正确。但只有在'userToUpdate'是一个正确的格式和有效的ObjectId的前提下。请确定将哪个字符串传递给'db.userlist.update'。 – Philipp

+0

@Philipp - 字符串是54654563c46d365a4c60ed98,它与集合中的用户ID相匹配 – tonyedwardspz

+0

当你的ajax请求到/ users/updateuser/[id时,可能是你的路由器绑定到'/ updateuser/[id]'的问题]'? – Philipp

回答

0

由于@Philipp指出,该代码是罚款和按预期工作。

我遇到的问题是我没有意识到所需要的节点服务器与每一个变化,以使Node.js的js文件重新启动(路线,app.js等)

我已经安装了nodemon( https://github.com/remy/nodemon),它会在检测到更改时重新启动服务器。这与现场重新加载Web浏览器结合解决了这个问题。