我面临的问题是:
- 当取消注解第1行和取消注解(记录)第3行和第4行时-它卡在那里,不打印任何东西,过了一段时间后,它给出了超过最大调用堆栈大小的消息,但如果我只打印字符串,它不会给出任何错误。
- 我尝试了所有测试用例,错误原因是第1行,因为如果我不执行第1行,它将顺利运行
- 实际上,我想在Booking中添加新预订后,在bookings数组中添加cust(客户)中的预订。
async book(req, res, next) {
const _id=req.body.id
/* I am getting this id From Jwt token,
(for case I am showing as this )*/
const category = req.params.category
try {
const cust = await Customer.findOne(
{ _id: _id }).populate("bookings")
const booking = new Booking({
service: category,
customer: cust
})
await booking.save()//line 0
cust.bookings.push(booking) //line 1
await cust.save() //line2
console.log(cust); //line 3
console.log(booking); //line 4
console.log("test"); //line 5
return res.render("status", )
} catch (error) {
console.log(error);
}
}
- 这是cust(客户架构)**
const customerSchema = mongoose.Schema({
email: {
type: String,
},
bookings: [
{
type: Schema.Types.ObjectId,
ref: 'Booking'
}]})
- 这是预订方案(Booking)**
const bookingSchema = new Schema({
id: {
type: String
},
service: {
type: String
},
customer: {
type: Schema.Types.ObjectId,
ref: 'Customer'
})
- 因此,我的目标是,每当为特定客户添加预订(预订模型)时,同一预订必须在客户(客户)的预订数组中为该唯一特定客户"引用"(推送)**
- 为了实现这一目标**
- 我首先将预订保存在(第0行)
- 然后在bookings中推送相同的预订(cust(Customer)中的数组)[line 1]
- 然后将cust(Customer)保存在[line 2]中
超出最大调用堆栈大小
at get (D:\my_proj\node_modules\mongoose\lib\helpers\get.js:8:30)
at isBsonType (D:\my_proj\node_modules\mongoose\lib\helpers\isBsonType.js:10:10)
at clone (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:75:7)
at cloneObject (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:125:17)
at clone (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:60:16)
at cloneObject (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:125:17)
at clone (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:60:16)
at cloneObject (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:125:17)
at clone (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:60:16)
at cloneObject (D:\my_proj\node_modules\mongoose\lib\helpers\clone.js:125:17)
2条答案
按热度按时间n6lpvg4x1#
**#1〉**因为您在模式中将bookings对象类型定义为
ObjectId
,但在line1
中您试图推送一个对象。所以试试这个:
#2〉
并且在这一行中,如果在之后不传递数据,则需要删除逗号。
最好是
res.redirect('/route')
并渲染路线。yzxexxkh2#
在我自己的例子中,在模型上将strict设置为true的工作原理如下