MeanJS:Crud模块失败的数据验证

时间:2015-10-07 16:16:01

标签: node.js validation meanjs

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

1 个答案:

答案 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;
        });
    };