我正在使用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/

10-09 20:19