【问题标题】:MeanJS: Crud Module Failing Data ValidationMeanJS:Crud 模块数据验证失败
【发布时间】:2016-01-04 23:45:53
【问题描述】:

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

【问题讨论】:

    标签: node.js validation meanjs


    【解决方案1】:

    我想通了:)

    在我的客户端控制器中,我需要先将属性添加到 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;
            });
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-02
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2012-07-14
      • 2020-09-11
      相关资源
      最近更新 更多