Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模型中应该放什么,控制器中应该放什么?_Javascript_Separation Of Concerns - Fatal编程技术网

Javascript 模型中应该放什么,控制器中应该放什么?

Javascript 模型中应该放什么,控制器中应该放什么?,javascript,separation-of-concerns,Javascript,Separation Of Concerns,首先,我在NoSQL&node.js中执行此操作。我认为这不会影响问题,但会有助于理解我的例子 我有一个页面模型和一个标签,看起来像这样: var Page = app.ormDb.define('pages', { uuid : { type: String, index: true, length: 40, default: function () { return uuid.v4(); } }, title : { type: St

首先,我在NoSQL&node.js中执行此操作。我认为这不会影响问题,但会有助于理解我的例子

我有一个页面模型和一个标签,看起来像这样:

var Page = app.ormDb.define('pages', {
    uuid            : { type: String, index: true, length: 40, default: function () { return uuid.v4(); } },
    title           : { type: String, index: true, length: 255 },
    url             : { type: String, index: true, length: 255 },
    summary_mu      : { type: String, length: 1024 },
    summary_html    : { type: String },
    summary_hist    : { type: JSON, default: function() { rerutn { items : [] }; } },
    sections        : { type: JSON, default: function() { rerutn { items : [] }; } },
    tags            : { type: JSON, default: function() { rerutn { items : [] }; } },
    date            : { type: Date, default: function() { return new Date(); } },
    updated         : { type: Date, default: function() { return new Date(); } }
});

var Tag = app.ormDb.define('tags', {
    uuid        : { type: String, index: true, length: 40, default: function () { return uuid.v4(); } },
    name        : { type: String, index: true, length: 255 },
    url         : { type: String, index: true, length: 255 },
    desc        : { type: String, length: 1024 },
    date        : { type: Date, default: function() { return new Date(); } },
    updated     : { type: Date, default: function() { return new Date(); } }
});
所以现在我有一些数据维护问题,例如,当我向页面添加标签时,我需要确保有一个标签条目。为此,我在模型上创建了一个方法

// Add a tag to a page
//   tag .. The tag to add
Page.prototype.addTag(tag, done) {
    var _this = this;
    if (_this.tags == null) {
        _this.tags = { items:[] };
    }

    var index = _this.tags.items.indexOf(tag);
    if (index == -1) {
        _this.tags.items.push(tag);
    }

    async.waterfall([
        function (cb) {
            app.models.tag.count({'name': tag}, cb);
        },
        function (count, cb) {
            if (count == 0) {
                app.models.tag.create({
                    name : tag,
                }, function (err, newTag) {
                    return cb(err, tag);
                });
            } else {
                return cb(null, tag);
            }
        }
    ], function (err, items) {
        done(err, items);
    });
}
在控制器中,我有验证用户输入的代码,加载当前页面,调用上面的page方法来添加标记,最后保存更新的页面。注意,在上面的方法中,我正在检查标记集合是否存在标记,并在需要时创建它

这是正确的,还是应该将Page方法的逻辑移动到控制器,并且模型只处理一个模型而不处理其他模型


我的理由是,如果不在标记集合中检查/创建标记,我永远不会向页面添加标记。

您使用的是客户端mvc,对吗?@imsiso不,这是服务器端。RESTful API。视图基本上是API调用返回的JSON。您知道mvc是试图应用其部分的结构和框架。不同的框架对每个部分有不同的定义。ie(有些只是视图,有些是视图+布局,有些是视图+视图对视图)。让我再看一遍你的问题。我不能仔细阅读你的问题,我现在应该离开了。正如我对mvc的理解:(它关系到你的框架(或者你的基本代码是强大的))你应该在控制器上做一些非常简单的事情,我的意思是,如果你想要一个用数组创建的HTML表,你应该把它交给view helper或者其他什么。当您想要使用数据源时,您应该了解表结构(我知道您知道),并且您可以将验证传递给控制器外的某个对象(另一个为控制器执行此操作的类)(可能是模型或模型使用的对象)。这有点正式