2017-08-05 113 views
0

我不知道如何使用像mongo db一样的现代框架构建这些编辑表单。如何将表单域映射到数据库对象

为了澄清这个问题,我想构建一个应用程序,允许编辑存储在Mongo中的一些对象字段。每个“表单提交”都应该创建一个对象的新实例,只更改已编辑的字段。

填充表单时,很容易检索整个对象并只在应用程序的视图部分生成相关字段。

但是,当保存表单时,要么需要再次检索对象,然后将每个表单字段“手动”映射到对象的字段中,最后将新对象保存到数据库中,或者事先存储所有对象的字段以隐藏字段的形式进行并做一些序列化。

由于这可能是一种常见的做法,并且这两种方法都缺乏,我怀疑有更好的技术可用。

回答

0

看看Mongoose

Mongoose提供了一个直接的,基于模式的解决方案来建模您的应用程序数据。它包括内置的类型转换,验证,查询构建,业务逻辑钩子等等。

您可以创建猫鼬模型,如下所述:http://mongoosejs.com/docs/models.html

例如,

var schema = new mongoose.Schema({ name: 'string', size: 'string' }); 
var Shirt = mongoose.model('Shirt', schema); 

然后你就可以通过只提供最近更新的参数更新衬衫文档实例,如描述在这里:http://mongoosejs.com/docs/api.html#model_Model.update

例如,

Shirt.update({ name: 'New Name' }, { size: 'small' }, 
    function (err, raw) { 
    if (err) return handleError(err); 
    console.log('The raw response from Mongo was ', raw); 
    } 
); 
0

你可以发送“稀疏”的更新到Mongo,只有几个字段被发送;您不需要重新保存整个文档。要做到这一点,你需要跟踪哪些领域已经改变;也被称为“脏”字段。

在传统的请求 - 响应往返中,由于所有内容都是无状态的,因此这有点难以做到。

一个解决方案是编写一个小型前端脚本,在窗体字段中侦听更改并将这些字段名称的列表保存到<input type="hidden">中。然后在您的快速应用程序中,检查该隐藏字段。如果存在,只处理这些字段。如果不存在,请重新保存整个文档。