I know signed transaction got v=37. now I am wondering how 'v=37' is used to check that the transaction is right one. nodes check v of every transaction they received?
I think you got it wrong. The signed transaction got v = chained_id * 2 + 35 or chained_id * 2 + 36 that's the valid v from sporiua dragon hard fork, the previous v = 27 and v = 28 is also valid. The chain_id indentify which blockchain you are using ( chain_id = 1 for ethereum mainnet chain_id = 2 for ethereum testnet and so on, for full chain_id check this wrbsite: https://chainid.network)
The reason why they add chain_id is to protect again replay attack for more info check the answer to this question: What is a replay attack?. In short a replay attack is taking a transaction on one blockchain, and maliciously or fraudulently repeating it on another blockchain. So they add chain_id so that everybody know which transaction on which chain.
The hard part is how they check a transaction is valid. Here is where mathic happen. To check that a transaction is valid you need v, r, s (r, s is generate when you sign the transaction, v is what you calculate using the fomula above) and the transaction data hash. Then there is a function that take all of the requirement above and then it will return back the address that send the signed transaction , you just need to check that is true then the transaction is valid. For more information read the appendix F from ethereum yellow paper: https://ethereum.github.io/yellowpaper/paper.pdf.