在客户端代码中重用 Mongoose 模式

Posted

技术标签:

【中文标题】在客户端代码中重用 Mongoose 模式【英文标题】:Reuse Mongoose schema in client code 【发布时间】:2016-04-02 13:49:48 【问题描述】:

我正在开发一个 MEANJS 应用程序并定义了一个 Mongoose 模式。现在我想在客户端代码中重用它来验证带有Mongoose in the browser 的表单。

基本应用程序是使用yo meanjs 生成的,我有一个包含模型的文件,如下所示:

'use strict';

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var schemaDefinition =  ... ;
var schemaOptions =  ... ;

var EventSchema = new Schema(schemaDefinition, schemaOptions);

mongoose.model('Event', EventSchema);

在客户端中包含该架构以重用它进行表单验证的最佳方式是什么?

【问题讨论】:

答案写在文档里。通过将其包含在脚本标签中,或使用诸如 browserify 或 webpack 之类的工具,在全局范围内。 @RobertMoskal 文档说明了猫鼬的功能,但没有说明它的架构。 这就是您在客户端上获得的全部内容,即架构。 【参考方案1】:

您可以指定validators directly to your schema。我假设 Mongoose 原型无法在客户端呈现,而且它需要大量工作才能将其映射到 Angular 的验证方式模型。 此外,还缺乏仅在客户端进行的安全验证。

使用 Angular 应用程序中的 AJAX 调用序列化模型并将其解析到 Express 侦听器非常容易。 由于您的架构具有验证器,因此不会将格式错误的数据解析到您的集合中。

【讨论】:

在客户端进行验证更加用户友好且速度更快,这就是为什么我也希望在客户端进行验证。根本不会跳过服务器上的验证。

以上是关于在客户端代码中重用 Mongoose 模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 angular2/浏览器上使用猫鼬

Mongoose:在一个集合下动态加载不同的模式

适配器模式-Adapter

低代码平台如何代客户开发

将 Mongoose 文档中的 JSON 数据返回到客户端 Javascript

如何在 AngularJS 客户端和 Node.js 服务器之间重用代码 [关闭]