Node.js代码中哪部分负责将POST请求数据写入Mongoose/MongoDB数据库
核心写入代码定位
负责将POST请求携带的JSON数据写入MongoDB的核心逻辑,是/product POST路由中的product.save()方法,完整的写入全流程如下:
- 请求数据解析
你代码中提前注册了app.use(bodyParser.json())中间件,当POST请求到达服务端时,这个中间件会先自动解析请求携带的JSON格式请求体,转换为JavaScript对象挂载到request.body上,你后续读取的request.body.title、request.body.price都来自这里。 - 生成符合约束的文档实例
你在./model/product.js中通过Mongoose的Schema定义了Product集合的数据结构约束:title为字符串、price为数字、likes默认值为0,并且导出了Mongoose模型Product。
执行var product = new Product()时,就创建了一个符合上述结构要求的Mongo文档实例,之后你将请求体中读取的title、price赋值给实例对应属性,未显式赋值的likes会自动使用Schema中定义的默认值0。 - 执行入库写入
调用Mongoose文档实例自带的save()方法时,Mongoose会先校验实例数据是否符合Schema的类型要求,校验通过后自动向已连接的swag-shop数据库的products集合(Mongoose会自动将模型名Product转为小写复数作为集合名)写入该条数据。 - 返回执行结果
写入操作完成后触发save方法的回调函数:如果写入过程出现报错(比如数据类型不符合、数据库连接异常),就返回500错误提示;写入成功则返回刚入库的完整文档数据(包含Mongo自动生成的唯一主键_id、自动补全的likes字段)给请求方。
内容的提问来源于stack exchange,提问作者webdevajf
相关产品推荐
相关产品推荐

