将多个值传递给meteor验证方法

时间:2017-05-02 04:31:27

标签: meteor

当我调用一个方法时,我想使用该调用将多个值传递给该方法。我不确定为什么它只是错误undfined。如果我只传递一个值profileCandidate,则该方法有效。

路径:imports/api/profileCandidate/methods.js

export const insertProfileCandidate = new ValidatedMethod({
  name: 'profileCandidate.insert',
  validate: new SimpleSchema({
    firstName: { type: String },
    lat: { type: Number },
    lng: { type: Number },
  }).validator(),
  run({profileCandidate, lat, lng}) {
    ProfileCandidate.insert({
      userId: this.userId,
      createdAt: new Date(),
      name: {
        first: profileCandidate.firstName,
      },
      contact: {
        mobile: profileCandidate.mobile,
      },
      address: {
        lat: lat,
        lng: lng,
      }
    });
  },
});

路径:imports/ui/ProfileCandidateForm.jsx

var profileCandidate = this.state;

geocodeByAddress(this.state.address, (error, { lat, lng }) => {
  if (error) { return }

  if (!error) {
    insertProfileCandidate.call({profileCandidate, lat, lng}, (error) => {
      if (error) {
        alert(error.reason);
      }
    });
  }
}

1 个答案:

答案 0 :(得分:1)

验证功能出现错误。试试这个:

export const insertProfileCandidate = new ValidatedMethod({
  name: 'profileCandidate.insert',
  validate: new SimpleSchema({
  profileCandidate: { type: Object },
    'profileCandidate.firstName': { type: String },
    lat: { type: Number },
    lng: { type: Number },
  }).validator(),
  run({ profileCandidate, lat, lng }) {
    console.log(profileCandidate, lat, lng)
  },
});

您必须为profileCandidate对象中的每个字段显式定义验证器。

让我知道......

谢谢!