- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当尝试使用自动表单通过 ValidatedMethod 更新集合时,我收到错误“架构不允许_id”。
据我所知this example和 official docs我的架构不期望包含 _id 字段,并且我不期望从更新语句中更新 id,所以我不知道为什么会发生此错误。
如果我从使用经过验证的方法切换到直接写入集合(将模式附加到没有 id 的集合),一切都会按预期工作,所以我假设问题出在我的在我的 ValidatedMethod 中进行验证。
知道我做错了什么吗?
模板:customer-edit.html
<template name="updateCustomerEdit">
{{> quickForm
collection="CustomerCompaniesGlobal"
doc=someDoc
id="updateCustomerEdit"
type="method-update"
meteormethod="CustomerCompanies.methods.update"
singleMethodArgument=true
}}
</template>
模板“代码隐藏”:customer-edit.js
Template.updateCustomerEdit.helpers({
someDoc() {
const customerId = () => FlowRouter.getParam('_id');
const instance = Template.instance();
instance.subscribe('CustomerCompany.get', customerId());
const company = CustomerCompanies.findOne({_id: customerId()});
return company;
}
});
更新验证方法:
// The update method
update = new ValidatedMethod({
// register the name
name: 'CustomerCompanies.methods.update',
// register a method for validation, what's going on here?
validate: new SimpleSchema({}).validator(),
// the actual database updating part validate has already been run at this point
run( newCustomer) {
console.log("method: update");
return CustomerCompanies.update(newCustomer);
}
});
架构:
Schemas = {};
Schemas.CustomerCompaniesSchema = new SimpleSchema({
name: {
type: String,
max: 100,
optional: false
},
email: {
type: String,
max: 100,
regEx: SimpleSchema.RegEx.Email,
optional: true
},
postcode: {
type: String,
max: 10,
optional: true
},
createdAt: {
type: Date,
optional: false
}
});
集合:
class customerCompanyCollection extends Mongo.Collection {};
// Make it available to the rest of the app
CustomerCompanies = new customerCompanyCollection("Companies");
CustomerCompaniesGlobal = CustomerCompanies;
// Deny all client-side updates since we will be using methods to manage this collection
CustomerCompanies.deny({
insert() { return true; },
update() { return true; },
remove() { return true; }
});
// Define the expected Schema for data going into and coming out of the database
//CustomerCompanies.schema = Schemas.CustomerCompaniesSchema
// Bolt that schema onto the collection
CustomerCompanies.attachSchema(Schemas.CustomerCompaniesSchema);
最佳答案
我终于弄清楚了这件事的真相。问题是 autoform 传入一个复合对象,该对象表示要更改的记录的 id 以及数据的修饰符 ($set),而不仅仅是数据本身。所以该对象的结构如下:
_id: '5TTbSkfzawwuHGLhy',
modifier:
{
'$set':
{ name: 'Smiths Fabrication Ltd',
email: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bcd5d2dad3fccfd1d5c8d4cfdaddde92dfd3d1" rel="noreferrer noopener nofollow">[email protected]</a>',
postcode: 'OX10 4RT',
createdAt: Wed Jan 27 2016 00:00:00 GMT+0000 (GMT Standard Time)
}
}
一旦我弄清楚了这一点,我就将更新方法更改为这个,然后一切都按预期工作:
// Autoform specific update method that knows how to unpack the single
// object we get from autoform.
update = new ValidatedMethod({
// register the name
name: 'CustomerCompanies.methods.updateAutoForm',
// register a method for validation.
validate(autoformArgs) {
console.log(autoformArgs);
// Need to tell the schema that we are passing in a mongo modifier rather than just the data.
Schemas.CustomerCompaniesSchema.validate(autoformArgs.modifier , {modifier: true});
},
// the actual database updating part
// validate has already been run at this point
run(autoformArgs)
{
return CustomerCompanies.update(autoformArgs._id, autoformArgs.modifier);
}
});
关于meteor - MDG ValidatedMethod 与 Aldeed Autoform : "_id is not allowed by the schema" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35066568/
我有一个产品集合,其属性包括发票价格。有没有办法设置我的 aldeed 表格数据表,使其不返回发票价格?查看 aldeed 表格文档,我只能找到如何选择要返回的字段 - 类似于: selector:
有没有办法限制将哪些数据发布到 aldeed 表格数据表?例如,如果我的集合具有属性 A、B、C、D,则属性 C 非常敏感,因此我想阻止它被发布,因此只有属性 A、B、D 发布到数据表中。我检查了文档
我遇到了 aldeed:autoform 的问题我无法解决,也不明白原因是什么。模板: {{> quickForm collection=Cases id="inserNewItem" type
我有一个 meteor 应用程序,我在其中使用 Aldeed: Autoform 根据架构将生成的表单直接插入到数据库中。有没有一种方法可以让我使用自己的自定义按钮或输入字段,而不是使用自动表单提供的
因此,在我的页面上,有一个从 Books 集合中呈现的不同书籍的列表。 对于每本书,都有一个表格可以添加有关借阅者的一些信息。 我当前的模板结构如下: {{#each book}}
在我的 Meteor 应用程序中,我将架构保存在名为 ClassifiedsTemp 的集合中,现在我尝试加载从数据库检索的这些架构,以使用自动表单和简单架构包为它们生成表单。所以我使用下面所示的代码
我的代码中有 bool 复选框。我的看法是,在检查时,它应该将其值返回为真,而在未检查时,它应该将其值返回为假。但我面临不同的情况,如下所示: 在页面初始加载时,它显示消息:“未选择”当我选中复选框时
我在尝试将数据从集合填充到 aldeed:tabular 时遇到问题 meteor 模块。 我的代码如下所示,是项目的根目录,作为 common.js 文件。 下面的所有代码都在一个文件中:根/lib
我正在使用meteor 和Aldeed 的自动表单来填充我的数据库。我想要实现的基本功能是这样的: 将主要表单正常链接到集合。 在主表单中,有一个按钮添加辅助,可以动态添加链接到不同集合的表单。 第二
我一直在阅读有关我正在制作的 meteor 应用程序的回调和 Hook 的一些文档,该应用程序使用 Aldeed Autoform 包。有人告诉我钩子(Hook)对我想做的事情会有帮助,但我实际上无法
当我点击列标题进行排序时,大约五分之一的情况下排序实际上并没有发生,“正在处理”指示器文本也没有消失。 我必须重新排序才能使消息消失。 请告诉我解决方案。 https://github.com/ald
当尝试使用自动表单通过 ValidatedMethod 更新集合时,我收到错误“架构不允许_id”。 据我所知this example和 official docs我的架构不期望包含 _id 字段,并
我想做的是防止用户绕过验证码。现在,在联系表单上,用户可以填写除验证码之外的所有字段,并且仍然可以提交表单 这是显示联系表格的网页 ->这是页面 -> http://ec2-52-5-104-185.
我是一名优秀的程序员,十分优秀!