二级字符串没有传递给MongoDB,但二级Number和Date是



我正试图将项目POST到MongoDB数据库,但其中五件事中只有三件正在进行,或者当"required:true"标志打开时,它会收到验证错误。

服务器/模型/项目.js

var mongoose = require('mongoose');
var Item = mongoose.model('Item', {
category: {
type: String,
minlength: 1,
trim: true,
required: true,
},
product: {
title: {
type: String,
minlength: 1,
trim: true,
required: true
},
quantity: {
type: Number,
default: 1,
required: true
},
added: {
type: Date,
default: Date.now
},
description: {
type: String,
minlength: 1,
trim: true,
required: true
}
}
});
module.exports = {Item};

server/db/mongoose.js

var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/Website', { useNewUrlParser: true });
module.exports = {mongoose};

server/server.js

const _ = require('lodash');
const express = require('express');
const bodyParser = require('body-parser');
const {ObjectID} = require('mongodb');
const hbs = require('hbs');
const fs = require('fs');
var {mongoose} = require('./db/mongoose');
var {Item} = require('./models/item');
const port = process.env.PORT || 3000;
var app = express();
// console.log(__dirname);
app.use(bodyParser.json());
hbs.registerPartials(__dirname + '/../views/partials')
app.set('view engine', 'hbs');
app.use((req, res, next) => {
var now = new Date().toString();
var log = `${now}: ${req.method} ${req.url}`;
console.log(log);
fs.appendFile('server.log', log + 'n', (err) => {
if (err) {
console.log('Unable to append to server.log.');
}
});
next();
});
app.use(express.static(__dirname + '/../public'));
hbs.registerHelper('getCurrentYear', () => {
return new Date().getFullYear()
});
// POST ROUTES
app.post('/equipment', (req, res) => {
console.log("Post command received");
console.log("This is the category: " + req.body.category);
console.log("This is the title: " + req.body.product.title);
console.log("This is the quantity: " + req.body.product.quantity);
console.log("This is the description: " + req.body.product.description);
var item = new Item({
category: req.body.category,
title: req.body.product.title,
quantity: req.body.product.quantity,
description: req.body.product.description
});
console.log(item);
item.save().then((doc) => {
console.log(doc);
res.send(doc);
}, (e) => {
res.status(400).send(e);
});
});

app.all('*', function(req, res) {
res.render("error.hbs");
});
app.listen(port, () => {
console.log(`Started on port ${port}`);
});
module.exports = {app};

最后,我试图通过Postman向/设备发送的内容

{
"category": "Lighting",
"product": {
"title": "Litepanel Duo Traveller Kit",
"quantity": 1,
"description": "A two light LED panel kit, containing one spot and one flood Litepanel 1x1 panel, with all drop in filters needed. Incldues two stands, power leads and adaptors, v-lock battery plates, and carry case."
}
}

当删除item.js中的"required:true"标记时,POST可以工作,但"product.title"one_answers"product.description"不会传递到DB。

感谢您的帮助。

Mongoosesave函数,它将获取一个JSON对象并将其存储在数据库中。要将数据保存到数据库中,您需要为早期创建的模型创建一个新实例,该实例的格式应与您定义的格式相同。

根据您的商品型号,尝试如下:

var item = new Item({
category: req.body.category,
"product.title": req.body.product.title,
"product.quantity": req.body.product.quantity,
"product.description": req.body.product.description
});

相关内容

最新更新