我正在使用Mean.JS来创建一个应用程序。
我正在尝试为我的某个模型“交换”设置CRUD模块。
通过界面添加新Exchange时,我遇到了数据验证问题。
我回来了“请填写API密钥”,即使在表格中我填写了属性:
在我的模型中(exchange.server.model.js):
var ExchangeSchema = new Schema({
name: {
type: String,
default: '',
required: 'Please fill Exchange name',
trim: true
},
apikey: {
type: String,
default: '',
required: 'Please fill in API Key',
trim: true
},
secret: {
type: String,
default: '',
required: 'Please fill in Secret Key',
trim: true
}
// ...
});
在我看来(create-exchange.client.view.html):
<div class="form-group">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input type="text" data-ng-model="name" id="name" class="form-control" placeholder="Name" required>
</div>
<label class="control-label" for="apikey">API Key</label>
<div class="controls">
<input type="text" data-ng-model="apikey" id="apikey" class="form-control" placeholder="API Key" required>
</div>
<label class="control-label" for="secret">Secret Key</label>
<div class="controls">
<input type="text" data-ng-model="secret" id="secret" class="form-control" placeholder="Secret Key" required>
</div>
</div>
在我的服务器端控制器(exchange.server.controller.js)中:
exports.create = function(req, res) {
var exchange = new Exchange(req.body);
exchange.user = req.user;
exchange.slug = req.body.name.toLowerCase().replace(' ', '');
exchange.save(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(exchange);
}
});
};
对于为什么验证失败并返回我的模型文件中定义的“必需”字符串的任何建议都将非常感激。
更新
在我的服务器端控制器(exchanges.server.controller.js)中,我在调试时添加了以下行:
console.log("REQUEST: " + util.inspect(req.body) );
我收到回复:
REQUEST: { name: 'SomeExchangeName' }
没有传递apikey / secretkey值。
答案 0 :(得分:0)
我想出了这个:)
在我的客户端控制器中,我需要在保存之前将属性添加到Exchange对象。
$scope.create = function() {
// Create new Exchange object
var exchange = new Exchanges ({
name: this.name,
apikey: this.apikey, // THIS LINE HERE
secret: this.secret // AND THIS LINE HERE
});
// Redirect after save
exchange.$save(function(response) {
$location.path('exchanges/' + response._id);
// Clear form fields
$scope.name = '';
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};