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