gpt4 book ai didi

javascript - 包装 Collection.insert

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

我在 Meteor.js“main.js - Server”中有这个方法。

Meteor.methods({
messageSent: function (message) {
var apiai = require('apiai');

var app = apiai("TOKEN");
var request = app.textRequest(message, {
sessionId: '<unique session id>'
});

request.on('response', function(response) {
console.log(response);
console.log(response.result.fulfillment.speech);
Meteor.wrapAsync(gateway.transaction.sale);
Messages.insert({
message: response.result.fulfillment.speech,
timestamp: new Date(),
username: 'gotoAndBot'
});
});

request.on('error', function(error) {
console.log(error);
});

request.end();
}
});

从 api.ai 获取答案并尝试将 api.ai 的答案添加到集合中。

但这会返回错误:

ERROR: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnviorment.

这是由 Messages.insert 行引起的。

最佳答案

正如评论中已经建议的,答案是将回调包装在 Meteor.bindEnvironment 中,以便它在附加了所有必要变量的纤程中运行。所以你的代码将是:

Meteor.methods({
messageSent: function (message) {
var apiai = require('apiai');

var app = apiai("TOKEN");
var request = app.textRequest(message, {
sessionId: '<unique session id>'
});

request.on('response', Meteor.bindEnvironment(function(response) {
Messages.insert({
message: response.result.fulfillment.speech,
timestamp: new Date(),
username: 'gotoAndBot'
});
}));

request.on('error', function(error) {
console.log(error);
});

request.end();
}
});

关于javascript - 包装 Collection.insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241143/

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