【问题标题】:Update mongodb collection record更新mongodb集合记录
【发布时间】: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 位于同一文件中。

标签: jquery node.js mongodb


【解决方案1】:

正如@Philipp 指出的那样,代码很好,可以按预期工作。

我遇到的问题是我没有意识到每次更改 node.js js 文件(路由、app.js 等)都需要重新启动节点服务器

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

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 2012-06-10
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多