gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:53:49 47 4
gpt4 key购买 nike

上下文

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

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

方法(在服务器上)

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

const condition = new Conditions();

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

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


condition.save(function(err, id) {

const conditionId = id;
return conditionId;

});


}
});

}

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

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);
}
};

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

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);

});


}

最佳答案

该问题与 Mantra 无关。我在 Astronomy .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;


}
});

关于javascript - 使用 Mantra 从 Meteor 中的回调方法传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798487/

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