Javascript 使用Mantra从Meteor中的回调方法传递值

Javascript 使用Mantra从Meteor中的回调方法传递值,javascript,meteor,Javascript,Meteor,上下文 我使用Meteor 1.3的Mantra架构来管理我的收藏。我试图通过Meteor回调函数传递插入对象的id,以便在容器中使用它 问题 当我控制台记录方法中的元素时,我得到了正确的Id,但当试图控制台从更高的层记录它时(从包含调用Meteor方法调用的操作的文件中),我得到了未定义的Id。然后,我需要将它从我的操作传递到使用它的容器 方法(在服务器上) 操作文件(调用的位置-客户端) 容器(客户端上的部分代码段-这是我需要使用conditionId的地方) 这个问题与咒语无关。我在天文学

上下文

我使用Meteor 1.3的Mantra架构来管理我的收藏。我试图通过Meteor回调函数传递插入对象的id,以便在容器中使用它

问题 当我控制台记录方法中的元素时,我得到了正确的Id,但当试图控制台从更高的层记录它时(从包含调用Meteor方法调用的操作的文件中),我得到了未定义的Id。然后,我需要将它从我的操作传递到使用它的容器

方法(在服务器上)

操作文件(调用的位置-客户端)

容器(客户端上的部分代码段-这是我需要使用conditionId的地方)


这个问题与咒语无关。我在天文学.save函数中返回插入的对象,但没有将该值传递给整个Meteor方法。因此未定义

这是服务器上的正确方法:

Meteor.methods({
    'condition.create'(conditionTitle, conditionType, segmentId) {

      const conditionAstro = new Conditions();

      // Show the latency compensations
      Meteor._sleepForMs(500);

      // XXX: Do some user authorization
      // website._id = _id;
      conditionAstro.conditionTitle = conditionTitle;
      conditionAstro.segmentId = segmentId;
      conditionAstro.conditionType = conditionType;


      const condition = conditionAstro.save(function(err, id) {

        // const conditionId = id;
        console.log(id);
        return id;

      });

      return condition;


    }
  });
export default {
  create({Meteor, LocalState, FlowRouter}, conditionTitle, conditionType, segmentId) {
    LocalState.set('CREATE_CONDITION_ERROR', null);

    if (!conditionTitle) {
      return LocalState.set('CREATE_CONDITION_ERROR', 'Condition Title is required!');
    }

    if (!conditionType) {
      return LocalState.set('CREATE_CONDITION_ERROR', 'Condition Type is required!');
    }


    if (!segmentId) {
    return LocalState.set('CREATE_CONDITION_ERROR', 'segmentId is required.');
    }

    LocalState.set('CREATE_CONDITION_ERROR', null);




    Meteor.call('condition.create', conditionTitle, conditionType, segmentId, function(err, conditionId) {

        if (err) {
          return LocalState.set('CREATE_CONDITION_ERROR', err.message);
        } else {
          console.log("method" + conditionId);
        }
    });

  },

  clearErrors({LocalState}) {
    return LocalState.set('CREATE_CONDITION_ERROR', null);
  }
};
onSubmit(event) {
    event.preventDefault;
    const {create, segmentId} = this.props;
    const conditionTitle = this.state.conditionTitle;
    const conditionType = this.state.conditionType;

    create(conditionTitle, conditionType, segmentId, function(conditionId) {

      console.log(conditionId);

    });


  }
Meteor.methods({
    'condition.create'(conditionTitle, conditionType, segmentId) {

      const conditionAstro = new Conditions();

      // Show the latency compensations
      Meteor._sleepForMs(500);

      // XXX: Do some user authorization
      // website._id = _id;
      conditionAstro.conditionTitle = conditionTitle;
      conditionAstro.segmentId = segmentId;
      conditionAstro.conditionType = conditionType;


      const condition = conditionAstro.save(function(err, id) {

        // const conditionId = id;
        console.log(id);
        return id;

      });

      return condition;


    }
  });