express+mongodb,两个数据模型关联的时候出错了
发布于 6 年前 作者 miuqiang 3608 次浏览 来自 问答

两个数据模型关联的时候出错了,不知道问题出在那里,望解答。谢谢 alt text alt text

25 回复

user和car互相引用了

互相引用了

能看下request.body里的内容吗,我刚才用你这个代码,试了一下,没有报错!

@CodeofGame { “make”: “BMW”, “model”: “X6”, “year”: “2018” }

@CodeofGame 我把代码贴上去了,你看下呢 https://github.com/miuqiang/express

你把代码发我邮箱吧,houhanbin121456@163.com,我给你看看

贴上一部分你的代码,你不觉得有问题么 newUser: async (req, res, next) => { try { const newUser = new User(req.body); const user = await newUser.save(); res.status(201).json(user); } catch (err) { next(err); } }

@CodeofGame 能跑起来么

我刚才把你的代码跑起来了 没出现问题啊。。。。。好尴尬

image.png 你看 没问题,所以不是上边说的循环引用的问题

@CodeofGame 有问题吧,具体的car都没有存起来,按理说应该是这样的。

alt text

@miuqiang image.png 你说的是这样吗,我跑起来确实没问题!!!

你看看是不是mongoose版本的问题

@CodeofGame 你是那个版本

我的天,我总算重现这个问题了,第一次调用接口会报错,之后就不会报了!

@CodeofGame 终于看到bug了

@miuqiang 我再检查检查啊

解决了

 user.cars.push(newCar.toObject());

这里需要把Document转换成js的普通对象再push,应该就可以了

@CodeofGame 恩,果然是那样,不过我还是没理解到。 我typeof了下 console.log(‘typeof newCar’, typeof newCar); ==>object console.log(‘typeof newCar.toObject’, typeof (newCar.toObject()));==>object 都是object

https://github.com/Automattic/mongoose/issues/1961#event-242694964 你可以看下这个issues,目测是mongoose的一个坑 image.png

回到顶部