我将一个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;
}
我还尝试删除我的数据库并再创建一次,我确信我的对象存在于我的数据库中。
答案 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) {