Если вы хотите вернуть измененный документ, вам нужно установить ссылку API {new:true}
API, вы можете использовать Cat.findOneAndUpdate(conditions, update, options, callback) // executes
, принятый официальным API Mongoose http: // mongoosejs. com / docs / api.html # findoneandupdate_findOneAndUpdate вы можете использовать следующие параметры
A.findOneAndUpdate(conditions, update, options, callback) // executes
A.findOneAndUpdate(conditions, update, options) // returns Query
A.findOneAndUpdate(conditions, update, callback) // executes
A.findOneAndUpdate(conditions, update) // returns Query
A.findOneAndUpdate() // returns Query
Другая реализация, которая не выражена на официальной странице API, и это то, что я предпочитаю использовать, это Promise
, которые позволяют вам иметь .catch
, где вы можете иметь дело со всей вашей различной ошибкой.
let cat: catInterface = {
name: "Naomi"
};
Cat.findOneAndUpdate({age:17}, cat,{new: true}).then((data) =>{
if(data === null){
throw new Error('Cat Not Found');
}
res.json({ message: 'Cat updated!' })
console.log("New cat data", data);
}).catch( (error) => {
/*
Deal with all your errors here with your preferred error handle middleware / method
*/
res.status(500).json({ message: 'Some Error!' })
console.log(error);
});
Попробуйте запрос ниже.
;with cte
AS
(
Select ROW_NUMBER() OVER(partition by STAT Order by UDATE ) as Rn,
*,
LAG(UDATE) OVER(partition by STAT Order by UDATE ) As PrevUDate,
COUNT(*) OVER(partition by STAT) As [Count]
from YourTable
)
Select Max(rn) As [Count],
OBJNR,STAT,
SUM(CASE WHEN rn%2=0 THEN DATEDIFF(d,PrevUDate,UDATE)
WHEN rn=[Count] THEN DATEDIFF(d,UDATE,getDate())
ELSE 0 END)
from cte
Group BY OBJNR, STAT