为什么更新不起作用

时间:2013-06-25 21:46:02

标签: node.js mongodb mongojs

我将一个json变量传递给一个模块,但我不能对我的集合进行更新,总是在更新时出错。

var gestion = function(myJSON) {
var dburl = 'localhost/mongoapp';
var collection = ['clientes'];
var db = require('mongojs').connect(dburl, collection );

        function cliente(nombre, estado, nuevo){
                this.nombre = nombre;
                this.estado = estado;
                this.nuevo = nuevo; 
        }

        var cliente1 = new cliente(myJSON.nombre myJSON.estado,  myJSON.nuevo);

if (cliente1.estado == "desconectado"){
                db.clientes.update(cliente1.nombre, {$set: {estado: "desconectado", nuevo: "no"}}, function(err) {
                        if (err) console.log("error "+cliente1.nombre);
                        else console.log("OK");
                        });
}

}           

return 0;
}

我还尝试删除我的数据库并再创建一次,我确信我的对象存在于我的数据库中。

1 个答案:

答案 0 :(得分:2)

您应该使用的签名是

update(query, update, callback)

但是你传递了query的字符串,这对Mongo没有任何意义。您可能需要查看the docs以获取概述,但对于此特定实例,您似乎正在尝试查找nombre等于cliente1.nombre处字符串的文档。对此的查询是字典{ nombre: cliente1.nombre },因此该行应为

db.clientes.update({nombre: cliente1.nombre}, {$set: {estado: "desconectado", nuevo: "no"}}, function(err) {