我正在编写一个端点,以从虚拟数据库中删除一条记录。现在,虚拟数据库被写为对象数组(然后将其更改为类,然后是实际数据库)。
我有一个dbHelpers.js
文件:
module.exports = {
createId(data) {
// ...
},
findById(data, recordId) {
// ...
},
deleteById(data, recordId) {
data.splice(data.findIndex(item => item.id === recordId), 1)
return data;
}
};
我在controllers/envelope.js
exports.deleteEnvelope = async (req, res) => {
try {
const { id } = req.params;
const envelopes = await dbEnvelopes;
const envelope = findById(envelopes, id);
if (!envelope) {
return res.status(404).send({
message: 'Envelope Not Found',
});
}
const updatedEnvelopes = deleteById(envelopes, id);
return res.status(200).send(updatedEnvelopes);
} catch (err) {
res.status(500).send(err)
}
};
但是,由于某种原因,我的findIndex
函数无法正常工作,并且始终返回-1
。该功能有什么问题?
下面是config/db.js
中的虚拟数据库:
const envelopes = [
{
"id": 1,
"title": "Rent",
"budget": 1000
},
{
id: 2,
"title": "Groceries",
"budget": 300
},
{
id: 3,
"title": "Entertainment",
"budget": 400
}
]
module.exports = envelopes;
答案 0 :(得分:0)
我认为您可以使用array.filter通过匹配ID来删除数组中的对象。
deleteById(data, recordId) {
return data.filter(item => item.id !== recordId)
}