在 mongodb 和 expressjs 中验证事物的问题
Issue in validating things in mongodb and expressjs
我在使用 expressjs 和 mongodb 验证事物时遇到了一些问题。
这是被注释的类
// mongodb configuration
var Server = require('mongodb').Server,
Db = require('mongodb').Db,
ObjectID = require('mongodb').ObjectID,
server = new Server('localhost',27017,{auto_reconnect:true}),
db = new Db('fantacalcio',server);
// mongodb end configuration
var UserModel = function() {
// max and min username length
this.username_max = 15;
this.username_min = 6;
};
// create funcion
UserModel.prototype.create = function(req,callback) {
// opening connection
db.open(function(err,db){
if(!err){
// choosing the collection
db.collection('user',function(err,collection){
if(err){
console.log(err);
}
else{
// Passing the req.body data and a callback to the validate function (see below)
this.validate(req,function(results){
// if the validate function return true, this will insert the username into the db
if(results==true){
collection.insert({username : req.body.username}, function(err,result){
if (!err) {
db.close();
callback(200);
}
});
}
else{
callback(results);
}
});
}
});
}
});
};
// validating function
UserModel.prototype.validate = function(req,callback) {
var errors=0;
var detail_error;
var username = req.body.username;
// check the username
if(!username || username < this.username_min || username>this.username_max){
errors++;
detail_error +="this is an error";
}
// will execute the callback witin the error
if(errors>0){
callback(detail_error);
}
// if there arent error will return true
else{
callback(true);
}
};
我得到的错误是
TypeError: Object #<Object> has no method 'validate'
参考该行:
this.validate(req,function(results){ .......
有问题的行是作为回调的一部分执行的,因此this
在调用回调时不会引用UserModel
实例。UserModel.prototype.create
的第一行应该声明一个变量(通常称为self
,但有些人更喜欢that
)并赋予它this
。然后用它替换回调中的任何this
情况。
请记住,this
实际上是一个关键字,而不是一个变量,它的行为不像闭包中的变量。如果要在闭包中保留其值,则必须将其复制到实际变量中。
相关文章:
- javascript中添加验证电子邮件的问题
- Javascript验证问题
- CRM身份验证问题
- 获取json结果的身份验证问题
- 关于验证和语义标记的一些基本HTML5问题
- 为密码验证实现正则表达式时出现问题
- JS表单验证问题
- 在 mongodb 和 expressjs 中验证事物的问题
- 如何在窗体中使用多个按钮解决验证问题
- 带有jquery验证问题的php表单
- jQuery表单验证和提交问题
- Javascript if语句问题,以及如何在jquery中验证颜色
- jQuery表单验证插件's只有文字字段的问题
- 在Internet Explorer 11中使用SoundCloud进行身份验证时出现问题
- Jquery表单验证脚本问题
- Google UiApp中的Google Apps脚本验证问题
- 小数、逗号和客户端验证的问题
- 使用 jQuery 问题验证和提交表单
- 自定义jQuery的问题.验证器规则
- 使用jquery有问题.验证器和格式散列一起工作