【发布时间】:2022-01-20 08:29:11
【问题描述】:
我在我的 nodejs 项目中使用猫鼬来实现数据库功能。下面是我的模型。
这是 POST 请求:
在 MongoDb 中,数据是这样保存的:
这里owers 数组是空的。
expense.js
const mongoose = require('mongoose');
const ExpenseSchema = new mongoose.Schema({
userid:{
type: String,
required: true
},
owers:[{
owerid:{
type: String
},
amt:{
type: Number
}
}],
name:{
type: String,
required: true
},
amount:{
type: Number,
require: true
}
});
const expense = mongoose.model('expense',ExpenseSchema);
module.exports = expense;
每当我尝试插入一些东西时,数组显示为空。下面是我的代码:
addExpense.js
const 费用 = require('../models/expense.js');
const addExpense = async (req,res) => {
const {name,amount,owerid,amt} = req.body;
console.log(name + " " + owerid);
const {userid} = req.params;
const expens = new expense({userid,name,amount});
try{
const data = await expens.save();
expens.owers.push({"owerid":owerid,"amt":amt});
res.send({"id":data._id});
}
catch(error){
res.send(error);
}
};
module.exports = {addExpense};
有人告诉我我做错了什么。
【问题讨论】:
-
您的“addExpense.js”代码基本上是说“获取请求中的任何内容并存储为新文档”。您在请求正文中发送了什么,您希望将什么保存在数据库中?
-
是的,这就是我想要的,但
owerid和amt的值没有存储在数组中。其他所有内容都在存储。 -
您是否将它们作为数组发送?抱歉,如果我的评论不清楚,但如果没有您尝试保存的数据的示例,这个问题就没有多大意义。
-
我已经更新了我的帖子看看
-
HTTP 是一个基于文本的协议,你知道的。 Postman 实际上将这个“图像”转换为 http 请求,并在请求正文中发送 json。您的应用程序在
req.body中收到的同一正文。尝试“保存”邮递员的请求,您将看到您发送了一个平面对象。那里没有owers数组。
标签: node.js mongodb mongoose mongoose-schema