无法读取属性'密码'为null
Cannot read property 'password' of null
我正在使用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();
});
});
您没有检查是否存在错误。
router.post('/updatesala', function(peticion, responsep){
var password = peticion.body.password;
var url = peticion.body.url;
ListaSalas.findOne({'url': url}, function (err, respuesta) {
if (err) return err;
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();
}
});
...
在检查了答案后,我可以更改代码,多亏了chrodam的想法,我直接使用了这个方法,而不是updateOne(),它是update(),并且在数据库中,我在密码字段中放了一个默认值("password"),最后的代码是:
router.post('/updatesala', function(peticion, responsep){
var password = peticion.body.password;
var url = peticion.body.url;
ListaSalas.findOne({'url': url}, function (err, respuesta) {
var compara = respuesta.password;
if (compara=="password"){
ListaSalas.update({'url': url}, {'password': password},function (err, result) {
if (err) return err;
});
responsep.writeHead(200, {"Content-Type": "text/html"});
responsep.write('passwordok');
responsep.end();
}else{
responsep.writeHead(200, {"Content-Type": "text/html"});
responsep.write('passwordmal');
responsep.end();}
});
});
相关文章:
- 数组在递归方法中设置为null
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何使用密码检测网络中的状态连接
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- Meteor忘记了密码的实现
- 来自文本输入null的html javascript变量
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- php代码在textbox更改事件上显示null
- 使用密码对话框Javascript请求帮助
- Internet Explorer缺少占位符支持,特别是密码字段
- angular js密码强度显示问题
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 一个密码测试程序,如果存在空格,它会提醒用户
- 密码输入键脚本在首次使用后无法工作
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 带有护照的节点:比较密码抛出错误未定义不是一个函数,当它返回返回完成(null,用户);
- 无法读取属性'密码'为null
- .match()对于密码的正则表达式返回null