我正在用 Lithium 和 mongoDB 编写我的第一个社区页面。我真的很喜欢 mongo 的无模式方式,但是有一个问题使得没有模式就无法工作:
例如,我们有一个像这样的简单表格:
<?=$this->form->create();?>
<?=$this->form->field('name',array('label' => 'Topic title'));?>
<?=$this->form->field('text',array('label' => 'Content'));?>
<?=$this->form->submit('create');?>
这将更简单地保存:
if($this->request->is('post')) {
$board_post = BoardPosts::create($this->request->data);
$board_post->save();
}
现在大家可以通过Firebug、开发者工具等DOM操作添加一些表单输入了。当然可能是数据库中一些无意义的字段,但也许有人添加了一个真正有用的字段。防止这种情况的唯一方法是在模型中创建模式。但对我来说,这使得无模式数据库的整个想法毫无用处,不是吗?当某些字段不能出现时,如何为不同的情况/动作制作模式?