gpt4 book ai didi

javascript - 向meteor方法提交表单值但出现错误userSchema not Defined

转载 作者:行者123 更新时间:2023-12-03 12:02:37 25 4
gpt4 key购买 nike

我正在尝试创建一个 Meteor 方法来保存由自动表单创建的表单中的用户配置文件。我收到一条错误消息,指出 userSchema 未定义。它是在我的助手中定义的,位于 Meteor.isClient 条件内,这可能是问题所在。我尝试让它可供客户端和服务器使用,但没有成功。

我想要实现的只是获取表单值并将它们插入到 Meteor.users.profile 中。

看起来服务器没有看到客户端上可见的 userSchema。

我收到此错误:

I20140816-14:14:28.170(-7)? Exception while invoking method 'saveProfile' ReferenceError: userSchema is not defined I20140816-14:14:28.173(-7)? at Meteor.methods.saveProfile (app/server/server.js:6:16) I20140816-14:14:28.173(-7)? at maybeAuditArgumentChecks (packages/livedata/livedata_server.js:1487) I20140816-14:14:28.173(-7)? at packages/livedata/livedata_server.js:643 I20140816-14:14:28.173(-7)? at _.extend.withValue (packages/meteor/dynamics_nodejs.js:56) I20140816-14:14:28.174(-7)? at packages/livedata/livedata_server.js:642 I20140816-14:14:28.174(-7)? at _.extend.withValue (packages/meteor/dynamics_nodejs.js:56) I20140816-14:14:28.176(-7)? at _.extend.protocol_handlers.method (packages/livedata/livedata_server.js:641) I20140816-14:14:28.176(-7)? at packages/livedata/livedata_server.js:541

我的架构:

if (Meteor.isClient) {

Schema = {};

Schema.UserProfile = new SimpleSchema({
firstName: {
type: String,
regEx: /^[a-zA-Z-]{2,25}$/
},
lastName: {
type: String,
regEx: /^[a-zA-Z]{2,25}$/
},
gender: {
type: String,
allowedValues: ['Male', 'Female']
},
bio: {
type: String,
},
avatar: {
type: String,
},
pinCode: {
type: Number,
min: 7,
max: 7
},
phoneNumber: {
type: Number,
min: 9,
max: 10
}
});



Schema.User = new SimpleSchema({
_id: {
type: String,
regEx: SimpleSchema.RegEx.Id,
optional: true,
},
email: {
type: String,
regEx: SimpleSchema.RegEx.Email,
optional: true,
},
createdAt: {
type: Date,
optional: true
},
profile: {
type: Schema.UserProfile,
},
services: {
type: Object,
optional: true,
blackbox: false
}
});
SimpleSchema.debug = true;
Meteor.users.attachSchema(Schema.User);

}

这是我的 helper :

Template.signupForm.helpers({
users: function () {
return Meteor.users;
},
userSchema: function () {
console.log('returning user schema')
console.log(Schema.User)
return Schema.User;
}
});

我的 Meteor 方法(server.js):

Meteor.methods({
saveProfile: function(doc) {
console.log('Meteor method 1')
// Important server-side check for security and data integrity
check(doc, userSchema);

console.log('Meteor method')
console.log(doc.firstName)

}
});

我的模板

<template name="signupForm">
<div class="panel-body">
{{#autoForm schema=userSchema id="signupForm" type="method" meteormethod="saveProfile"}}
<fieldset>
{{> afObjectField name='profile'}}
</fieldset>

<button type="submit" class="btn btn-primary">Insert</button>
{{/autoForm}}
</div>
</template>

最佳答案

请执行 2 个步骤:

1:将 Schema 对象(包含所有后代)添加到目录(如文件夹),客户端和服务器都可以看到该对象。

2:在服务器端使用 Schema.User 而不是 userSchema。请注意,userSchema 是在客户端的 Template.signupForm.helpers 中定义的,因此 Meteor.methods.saveProfile 无法找到它。

关于javascript - 向meteor方法提交表单值但出现错误userSchema not Defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com