【发布时间】:2014-11-18 02:08:27
【问题描述】:
这个周末我在玩 node.js 和 mongo.db。目前我正在尝试更新集合中的记录。
当调用 archiveuser 函数时,我在 developertools 控制台中收到“加载资源失败:net::ERR_EMPTY_RESPONSE”。我正在使用与 archiveuser 功能类似的 sn-p 来删除用户,这非常有效。我不明白为什么现在失败了。
我已经编写了这段 sn-p 代码来在 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;
非常感谢任何帮助
托尼
【问题讨论】:
-
您的代码看起来正确。但前提是
userToUpdate是一个格式正确且有效的ObjectId。请确认到底是哪个字符串传递给db.userlist.update。 -
@Philipp - 字符串为 54654563c46d365a4c60ed98 ,与集合中的用户 ID 匹配
-
可能是您的路由器绑定到
/updateuser/[id]而您的ajax 请求是到/users/updateuser/[id]的问题? -
@Philipp 我不这么认为。该模式匹配 users.js 中的 deleteuser 路由及其关联的 ajax 调用,它们都与上述 sn-ps 位于同一文件中。