从 Javascript 中的 Trello 列表中获取顶级卡片
Getting the top card from a Trello list in Javascript
我正在尝试使用 Javascript 从列表中获取最上面的卡片。
我在这上面看到了另一个 post,但代码已过时/不再有效。
我有一个名为“航班”的 Trello 列表,如果有人能帮助我,我将不胜感激。简单地说,我想获得 Trello 列表中的顶级卡片,以及卡片的 自定义字段 。
到目前为止,我已经尝试了以下代码:
// Getting all lists from a certain board.
fetch(`https://api.trello.com/1/boards/0Ph2WHXQ/lists?key=5fe33d73bded56ada14decf701da0203&token=e353cb19fabc8dfbea36e1b824a92ff0b358860b1de2d11c745f6e8321edfc09`, {
method: 'GET',
}).then(response => {
console.log(response)
let lists = JSON.parse(response.body);
// Searching for a list with a certain name and store it's id.
let certainListId = lists.find(list => list.name === "Flights").id;
// Use the stored id in certainListId to get all cards of the list.
fetch(`https://api.trello.com/1/lists/${certainListId}/cards`, {
method: 'GET'
}).then(response => {
let certainListCards = JSON.parse(response.body);
// Cards in the array is in top to bottom order. So top one is the very first.
let firstCard = certainListCards[0];
console.log(firstCard)
// Send with the bot the name of the first (top) card thanks to firstCard.name property.
}).catch(err => console.error(err));
}).catch(err => console.error(err));
但是,我收到以下错误消息:
错误在线:
let lists = JSON.parse(response.body);
我试过不带 JSON.parse 的代码,但出现错误“Typeerror: lists.find is not a function”
我想我需要解析代码,但我不知道为什么它不起作用。我附上了一张刚刚打印 response.body 到控制台的图像。
图片:
感谢您阅读本文,非常感谢您的帮助。我正在使用 node.js(最新版本),对 'fetch' 命令使用交叉获取模块。我只是要求它作为
const fetch = require("cross-fetch");
我非常怀疑这会导致任何问题,但请随时启发我。
再次感谢!
根据 cross-fetch 文档,您不会从 response.body
获取数据,而是将其传递到第二个承诺中。
这有效,列出了 returns 个对象数组:
let fetch = require('cross-fetch');
fetch('https://api.trello.com/1/boards/0Ph2WHXQ/lists?key=5fe33d73bded56ada14decf701da0203&token=e353cb19fabc8dfbea36e1b824a92ff0b358860b1de2d11c745f6e8321edfc09')
.then(res => {
if (res.status >= 400) {
throw new Error("Bad response from server");
}
return res.json();
})
.then(lists => {
console.log(lists);
})
.catch(err => {
console.error(err);
});
输出:
[
{
id: '5d2364f2c87d3d4913fe2061',
name: 'READ ME & TEMPLATE',
closed: false,
idBoard: '5d2363b2748e8e88009875f0',
pos: 65535,
subscribed: false,
softLimit: null
},....
或者,虽然这不能回答您的问题,但这里有一个仅使用 NodeJS api:
的代码解决方案
const https = require('https')
// this should be in a .gitignored an environment file
key = "5fe33d73bded56ada14decf701da0203&token=e353cb19fabc8dfbea36e1b824a92ff0b358860b1de2d11c745f6e8321edfc09"
function getBoardLists(boardsId, callback) {
const options = {
hostname: 'api.trello.com',
port: 443,
path: `/1/boards/${boardsId}/lists?key=${key}`,
method: 'GET'
}
https.request(options, res => {
// references
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
try {
var lists = JSON.parse(json);
callback(lists, null)
} catch (e) {
callback(null, error)
}
} else {
callback(null, Error(`Status code ${res.statusCode} is not 200`))
}
});
}).on('error', error => {
callback(null, error)
}).end()
}
function getList(listId, callback) {
const options = {
hostname: 'api.trello.com',
port: 443,
path: `/1/lists/${listId}/cards?key=${key}`,
method: 'GET'
}
https.request(options, res => {
// references
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
try {
var lists = JSON.parse(json);
callback(lists, null)
} catch (e) {
callback(null, error)
}
} else {
callback(null, Error(`Status code ${res.statusCode} is not 200`))
}
});
}).on('error', error => {
callback(null, error)
}).end()
}
getBoardLists("0Ph2WHXQ", (lists, error) => {
if (error) {
return console.error(error)
}
console.log(lists)
let flightsListId = lists.find(list => list.name === "Flights").id;
getList(flightsListId, (list, error) => {
if (error) {
return console.error(error)
}
console.log(list)
})
})
我正在尝试使用 Javascript 从列表中获取最上面的卡片。 我在这上面看到了另一个 post,但代码已过时/不再有效。
我有一个名为“航班”的 Trello 列表,如果有人能帮助我,我将不胜感激。简单地说,我想获得 Trello 列表中的顶级卡片,以及卡片的 自定义字段 。
到目前为止,我已经尝试了以下代码:
// Getting all lists from a certain board.
fetch(`https://api.trello.com/1/boards/0Ph2WHXQ/lists?key=5fe33d73bded56ada14decf701da0203&token=e353cb19fabc8dfbea36e1b824a92ff0b358860b1de2d11c745f6e8321edfc09`, {
method: 'GET',
}).then(response => {
console.log(response)
let lists = JSON.parse(response.body);
// Searching for a list with a certain name and store it's id.
let certainListId = lists.find(list => list.name === "Flights").id;
// Use the stored id in certainListId to get all cards of the list.
fetch(`https://api.trello.com/1/lists/${certainListId}/cards`, {
method: 'GET'
}).then(response => {
let certainListCards = JSON.parse(response.body);
// Cards in the array is in top to bottom order. So top one is the very first.
let firstCard = certainListCards[0];
console.log(firstCard)
// Send with the bot the name of the first (top) card thanks to firstCard.name property.
}).catch(err => console.error(err));
}).catch(err => console.error(err));
但是,我收到以下错误消息:
错误在线:
let lists = JSON.parse(response.body);
我试过不带 JSON.parse 的代码,但出现错误“Typeerror: lists.find is not a function”
我想我需要解析代码,但我不知道为什么它不起作用。我附上了一张刚刚打印 response.body 到控制台的图像。
图片:
感谢您阅读本文,非常感谢您的帮助。我正在使用 node.js(最新版本),对 'fetch' 命令使用交叉获取模块。我只是要求它作为
const fetch = require("cross-fetch");
我非常怀疑这会导致任何问题,但请随时启发我。 再次感谢!
根据 cross-fetch 文档,您不会从 response.body
获取数据,而是将其传递到第二个承诺中。
这有效,列出了 returns 个对象数组:
let fetch = require('cross-fetch');
fetch('https://api.trello.com/1/boards/0Ph2WHXQ/lists?key=5fe33d73bded56ada14decf701da0203&token=e353cb19fabc8dfbea36e1b824a92ff0b358860b1de2d11c745f6e8321edfc09')
.then(res => {
if (res.status >= 400) {
throw new Error("Bad response from server");
}
return res.json();
})
.then(lists => {
console.log(lists);
})
.catch(err => {
console.error(err);
});
输出:
[
{
id: '5d2364f2c87d3d4913fe2061',
name: 'READ ME & TEMPLATE',
closed: false,
idBoard: '5d2363b2748e8e88009875f0',
pos: 65535,
subscribed: false,
softLimit: null
},....
或者,虽然这不能回答您的问题,但这里有一个仅使用 NodeJS api:
的代码解决方案const https = require('https')
// this should be in a .gitignored an environment file
key = "5fe33d73bded56ada14decf701da0203&token=e353cb19fabc8dfbea36e1b824a92ff0b358860b1de2d11c745f6e8321edfc09"
function getBoardLists(boardsId, callback) {
const options = {
hostname: 'api.trello.com',
port: 443,
path: `/1/boards/${boardsId}/lists?key=${key}`,
method: 'GET'
}
https.request(options, res => {
// references
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
try {
var lists = JSON.parse(json);
callback(lists, null)
} catch (e) {
callback(null, error)
}
} else {
callback(null, Error(`Status code ${res.statusCode} is not 200`))
}
});
}).on('error', error => {
callback(null, error)
}).end()
}
function getList(listId, callback) {
const options = {
hostname: 'api.trello.com',
port: 443,
path: `/1/lists/${listId}/cards?key=${key}`,
method: 'GET'
}
https.request(options, res => {
// references
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
try {
var lists = JSON.parse(json);
callback(lists, null)
} catch (e) {
callback(null, error)
}
} else {
callback(null, Error(`Status code ${res.statusCode} is not 200`))
}
});
}).on('error', error => {
callback(null, error)
}).end()
}
getBoardLists("0Ph2WHXQ", (lists, error) => {
if (error) {
return console.error(error)
}
console.log(lists)
let flightsListId = lists.find(list => list.name === "Flights").id;
getList(flightsListId, (list, error) => {
if (error) {
return console.error(error)
}
console.log(list)
})
})