【问题标题】:My model isn't creating objects and failing silently我的模型没有创建对象并且默默地失败
【发布时间】:2013-08-24 03:33:29
【问题描述】:

我正在使用mongo 运行标准geddy 设置。

路线:

router.get('/submit').to('Urls.add');
router.post('/create').to('Urls.create');

控制器:

// invokes the form for submitting a new url
// sends form output to the create function
this.add = function (req, resp, params) {
    this.respond({params: params});
};

// creates a new url object and saves it to the database
this.create = function (req, resp, params) {
    var self = this;
    var timestamp = new Date().getTime();
    var url = geddy.model.Url.create({
        title: params.title, 
        url: params.url,
        score: 0,
        created: timestamp
    });
    url.save(function(err, data) {
        if (err) {
            params.errors = err;
            self.transfer('add');
        } else {
            this.redirect({controller: 'Url.index'});
        }
    });
};

型号:

var Url = function () {
    this.defineProperties({
        title:   {type:'string', required:true},
        url:     {type:'string', required:true},
        score:   {type:'int', required:true},
        created: {type:'datetime', required:true}
    });

    this.validatesPresent('title');
    this.validatesPresent('url');
};

Url = geddy.model.register('Url', Url);

查看:

<div class="row">
<form class="form-horizontal" role="form" action="/create" method="POST">
    <div class="form-group">
        <label for="title" class="col-lg-1 control-label">Title</label>
        <div class="col-lg-7">
            <input type="text" class="form-control" id="title" placeholder="title">
        </div>
    </div>
    <div class="form-group">
        <label for="url" class="col-lg-1 control-label">URL</label>
        <div class="col-lg-7">
            <input type="text" class="form-control" id="url" placeholder="url">
        </div>
    </div>
    <div class="form-group">
        <div class="col-lg-offset-1 col-lg-7">
            <button type="submit" class="btn btn-default">Submit</button>
        </div>
    </div>
</form>
</div>

当我访问/submit 并填写表格时,我会再次被重定向到同一个表格。没有任何东西被插入到数据库中。这是我第一次使用 geddy,所以我可能遗漏了一些东西。

【问题讨论】:

    标签: node.js mongodb model-view-controller model geddy


    【解决方案1】:

    看起来您没有在视图中打印出错误,所以您看不出它失败的原因。

    从外观上看,它失败了,因为缺少必需的变量。您的表单字段中需要name 属性,而不仅仅是id,否则服务器将永远无法获取您的值。

    【讨论】:

    • 就是这样,我缺少名称参数。谢谢!
    猜你喜欢
    • 2012-03-28
    • 2015-01-05
    • 2016-03-18
    • 2022-01-02
    • 2011-01-03
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多