Я переписываю свой проект и задаюсь вопросом, как мне опубликовать массив данных, в котором я повторно использую возвращаемое значение предыдущего почтового запроса в качестве их идентификатора. Вот приблизительная деталь структуры данных
- Контрольный список А
- [ChecklistItem 1, ChecklistItem 2, ChecklistItem 3] имеет свой идентификатор, установленный как Checklist A
Итак, моя текущая настройка: я отправляю контрольный список A, получаю возвращаемое значение от FaunaDB (который является его уникальным идентификатором), затем вставляю его в массив с помощью array.map, а затем повторно отправляю массив в FaunaDB.
Но я не знаю, как сохранить массив, поскольку параметр запроса уже израсходован. поэтому мне было интересно, как это сделать нормальным образом.
вот фрагмент кода функции
app.post('/checklists', (req,res) =>{
const checklist = {
dateCreated: Date.now(),
user: Call(Fn('getUser'),'10049'),
equipmentid: 'PM160'
};
const _checklistItems = [{
componentid: 'AIRLK',
conditionid: 'OK',
equipmentid: 'PM160',
remarks: 'test'
}]
const ckdoc = client.query(
Crt('checklists',checklist))
.then((ret) => {
//would like to catch this ret and plug it into _checklistitems as its ID
//then send the _checklistitems to faunaDB
});
res.send(ckdoc);
});
function Crt(collection,data){
return Create(
Collection(collection),
{data}
)
}
ОБНОВЛЕНИЕ после того, как @eskwayrd указал, что вы можете связать клиентские запросы в рамках одного экспресс-запроса js. Я связал другой клиентский запрос, в котором я сохраняю коллекцию элементов контрольного списка вместе со ссылкой на возврат из предыдущего запроса. хотя у меня были проблемы с отправкой его как массива, сохранение его через array.map все еще работало.
app.post('/checklists', async (req,res) =>{
const checklist = {
dateCreated: Date.now(),
user: Call(Fn('getUser'),'10049'),
equipmentid: 'PM160'
};
const _checklistItems = [{
componentid: 'AIRLK',
conditionid: 'OK',
equipmentid: 'PM160',
remarks: 'test'
}]
var _ref;
console.log(checklist)
await client.query(
Crt('checklists',checklist)
)
.then((ret) => {
_ref = ret.ref
})
_checklistItems.map(item => {
item.checklist = _ref
console.log(item)
client.query(
Crt('checklist_items', item)
)
})
});
Create
- это только что созданный документ, который включает поляref
,ts
иdata
. Вы должны извлечьref
из ответа. Непонятно, что вы подразумеваете под повторной отправкой массива в FaunaDB. Что вы собираетесь делать с массивом? - person eskwayrd   schedule 09.12.2020