假設我們有一個名為的表user,它有userId列。
user
----
userId
我們有另一個名為的表Team,它有 2 列userId和leadId.
Team
----
userId
leadId
條件 1:
我想將資料插入到 Teams 表中,并且該值應該在用戶表中。換句話說userIdand leadIdof Teamstable should userIdof usertable。否則會拋出用戶表中不存在 id 的錯誤。
條件2:
另外一個條件是userId并且leadId不能相同。這是通過使用 if 檢查來完成的。
這是我的 API 代碼
router.post('/', checkToken, async (req, res) => {
try {
const { body } = req;
const {
userId,
leadId
} = body
const dataToInsert = {
userId,
leadId
}
if (userId == leadId) {
res.status(300).json({ error: "Lead id and user can't be same." })
}
else {
const data = await db.Team.create(dataToInsert)
res.status(200).json({
data
})
}
} catch (e) {
console.log("Error in inserting team lead", e)
res.status(500).json({
error: "Internal Server Error",
status: false,
})
}
})
export default router;
請幫助如何處理條件 1。
更新: 這是我現在嘗試的
const IdCount= await db.User.findAll({
attributes: [[db.Sequelize.fn('count', db.Sequelize.col('id')), 'getIdCount']],
where: { "id": userId && leadId }
});
IdCount 的輸出:
這是輸出,getIdCount 值為 0,這是正確的,但它發送給我整個物件,我如何才能只獲得 getIdCount 值?
[
user {
dataValues: { getIdCount: '0' },
_previousDataValues: { getIdCount: '0' },
_changed: Set(0) {},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array]
},
isNewRecord: false
}
]
uj5u.com熱心網友回復:
您只需要確保兩個用戶都存在于 Users 表中(對 Users 表執行兩個查詢),然后在Teams表中插入一條記錄。
最好使用顯式事務來獲取兩個用戶并將記錄插入 Teams。
要讓您在 DB 中有一個用戶,您可以使用count:
const whereClause = userId ? {
where: {
id: userId,
}
} : {}
const userCount = await db.User.count({
where: {
id: userId
}
})
const userExists = count === 1;
同樣的方法你可以檢查 leadId
uj5u.com熱心網友回復:
這是我所做的,它給了我對所有條件的正確回應
router.post('/admin/assign', checkToken, authorize('admin'), async (req, res) => {
try {
const { body } = req;
const {
userId,
leadId
} = body
const dataToInsert = {
userId,
leadId
}
const idCount = await db.User.count({ where: { [Op.or]: [{ id: userId }, { id: leadId }] } })
if (userId == leadId) {
res.status(400).json({ error: "Lead id and user can't be same." })
}
else if (idCount == 2) {
const data = await db.Team.create(dataToInsert)
res.status(200).json({
data
})
}
else {
res.status(400).json({ error: "UserId or LeadId doesn't exist" })
}
} catch (e) {
console.log("Error in inserting team lead", e)
res.status(500).json({
error: "Internal Server Error",
status: false,
})
}
})
export default router;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/410934.html
標籤:
上一篇:搜索PSQLJSONB元組陣列
