我正在使用mongodb和nodejs创建一个小数据库,我想更新一个字段,但是我有一个错误,代码是,模型的名称是“listasalas”:
router.post('/updatesala', function(peticion, responsep){
var password = peticion.body.password;
var url = peticion.body.url;
ListaSalas.findOne({'url': url}, function (err, respuesta) {
var PassBusca = respuesta.password;
if(PassBusca){
responsep.writeHead(200, {"Content-Type": "text/html"});
responsep.write("passwordmal");
responsep.end();
}else{
ListaSalas.update({url: url}, {password: password});
responsep.writeHead(200, {"Content-Type": "text/html"});
responsep.write("passwordok");
responsep.end();
}
});
有人知道我的错误在哪里吗?
谢谢你
最佳答案
问题在于从findOne()
方法返回的结果,如果没有匹配,则respuesta
为空,因此错误
无法读取空的属性“password”
要解决此问题,请直接使用updateOne()
方法,并在回调中检查文档是否已被修改:
router.post('/updatesala', function(peticion, responsep){
var password = peticion.body.password;
var url = peticion.body.url;
ListaSalas.updateOne({'url': url}, {'password': password}, function (err, result) {
if (err) return err;
var PassBusca = result.result.n;
var pwd = PassBusca ? "passwordmal": "passwordok";
responsep.writeHead(200, {"Content-Type": "text/html"});
responsep.write(pwd);
responsep.end();
});
});
关于javascript - 无法读取null的属性'password',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34445293/