Итак, я пытаюсь отправить задачу в очередь облачных задач Google, но когда она туда попадает, она становится неопределенной.Вот снимки моего кода.Что я делаю не так?
Я делаю это с помощью node.js и фреймворка Adonis.js.Полезная нагрузка состоит из объекта с пользовательской информацией.Что-то вроде: {first_name: 'Bla', last_name: 'Bla bla', email: 'bla@bla.com'} и так далее.Я выполнял задачи, которые действительно работают раньше, но я не могу найти ошибку в этом ... Итак, вот мои фрагменты кода:
Здесь я создаю задачу:
const payload = { users }
const http = {
method: 'PUT',
endpoint: '/api/task/users',
headers: {
Authorization: request.header('Authorization')
}
}
const task = new Task('users', http, payload)
try {
await task.createTask()
} catch (e) {
console.log(e)
return response.status(500).send({ message: 'Users task: Internal Error!' })
}
Это мой класс задач (я сделал это так же, как документация по облачным задачам):
constructor (queue, http, payload = undefined, seconds = undefined) {
const project = Config.get('google.projectId')
const location = Config.get('google.location')
this._client = new cloudTasks.CloudTasksClient()
console.log(project, location, queue)
this._parent = this._client.queuePath(project, location, queue)
this._payload = payload
this._http = http
this._seconds = seconds
}
async createTask() {
const task = {
appEngineHttpRequest: {
httpMethod: this._http.method,
relativeUri: this._http.endpoint,
headers: this._http.headers
},
}
if (this._payload !== undefined) {
task.appEngineHttpRequest.body = Buffer.from(JSON.stringify(this._payload)).toString('base64')
}
if (this._seconds !== undefined) {
task.scheduleTime = {
seconds: this._seconds + Date.now() / 1000
}
}
const request = {
parent: this._parent,
task: task
}
console.log(`Sending task: ${task}`)
const [ res ] = await this._client.createTask(request)
console.log(`Created task ${res.name}`)
}
И это работник, который получит задачу:
async users ({ request, response, domain }) {
const { users } = request.only(['users'])
for (const user of users) {
try {
let u = await User.findOrCreate({ email: user.email }, user)
if (u.id) {
u.merge(user)
await u.save()
} else {
await u.test().associate(test)
}
} catch (e) {
console.log(e)
return response.status(500).send(`User Task Error: ${e}`)
}
}
Я ожидал того же самого объекта, который описал, прежде чем добраться до работника, но я просто могу получить «неопределенное» значение.Ребята, вы можете мне помочь?Спасибо!: D