Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose未将数据保存到mongodb?_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript Mongoose未将数据保存到mongodb?

Javascript Mongoose未将数据保存到mongodb?,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在使用JavaScript、MongoDB和Node.js构建一个购物车。到目前为止,我已经能够保存网站的所有产品、用户和会话。在我完成结帐表单后,我的输入应该保存到MongoDB。我应该能够在db集合中看到“订单”。但当我在命令行中键入showcollections时,只显示产品、用户和会话 这是错误消息: ValidationError: Order validation failed at MongooseError.ValidationError (/Users/vynguy

我正在使用JavaScript、MongoDB和Node.js构建一个购物车。到目前为止,我已经能够保存网站的所有产品、用户和会话。在我完成结帐表单后,我的输入应该保存到MongoDB。我应该能够在db集合中看到“订单”。但当我在命令行中键入
showcollections
时,只显示产品、用户和会话

这是错误消息:

ValidationError: Order validation failed
    at MongooseError.ValidationError (/Users/vynguyen/shopping-cart/node_modules/mongoose/lib/error/validation.js:23:11)
    at model.Document.invalidate (/Users/vynguyen/shopping-cart/node_modules/mongoose/lib/document.js:1524:32)
    at /Users/vynguyen/shopping-cart/node_modules/mongoose/lib/document.js:1399:17
    at validate (/Users/vynguyen/shopping-cart/node_modules/mongoose/lib/schematype.js:706:7)
    at /Users/vynguyen/shopping-cart/node_modules/mongoose/lib/schematype.js:750:9
    at Array.forEach (native)
    at SchemaString.SchemaType.doValidate (/Users/vynguyen/shopping-cart/node_modules/mongoose/lib/schematype.js:711:19)
    at /Users/vynguyen/shopping-cart/node_modules/mongoose/lib/document.js:1397:9
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
这是我的猫鼬模式:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var schema = new Schema({
    user: {type: Schema.Types.ObjectId, ref: 'User'},
    cart: {type: Object, required: true},
    address: {type: String, required: true},
    name: {type: String, required: true},
    paymentId: {type: String, required: true}
});

module.exports = mongoose.model('Order', schema);
这是我的index.js:

var express = require('express');
var router = express.Router();
var Cart = require('../models/cart');

var Product = require('../models/product');
var Order = require('../models/order');

/* GET home page. */
router.get('/', function(req, res, next) {
    var successMsg = req.flash('success')[0];
    Product.find(function(err, docs) {
        var productChunks = [];
        var chunkSize = 3;
        for (var i = 0; i < docs.length; i += chunkSize) {
            productChunks.push(docs.slice(i, i + chunkSize));
        }
        res.render('shop/index', { title: 'Shopping Cart', products: productChunks, successMsg: successMsg, noMessages: !successMsg});
    });
});

router.get('/add-to-cart/:id', function(req, res, next) {
    var productId = req.params.id;
    var cart = new Cart(req.session.cart ? req.session.cart : {});

    Product.findById(productId, function(err, product){
        if (err) {
            return res.redirect('/');
        }
        cart.add(product, product.id);
        req.session.cart = cart;
        res.redirect('/');
    });
});

router.get('/shopping-cart', function(req, res, next) {
    if (!req.session.cart) {
        return res.render('shop/shopping-cart', {products: null});
    }
    var cart = new Cart(req.session.cart);
    res.render('shop/shopping-cart', {products: cart.generateArray(), totalPrice: cart.totalPrice});
});

router.get('/checkout', function(req, res, next) {
    if (!req.session.cart) {
        return res.redirect('/shopping-cart');
    }
    var cart = new Cart(req.session.cart);
    var errMsg = req.flash('error')[0];
    res.render('shop/checkout', {total: cart.totalPrice, errMsg: errMsg, noError: !errMsg});
});

router.post('/checkout', function(req, res, next) {
    if (!req.session.cart) {
        return res.redirect('/shopping-cart');
    }
    var cart = new Cart(req.session.cart);

    var stripe = require("stripe")(
      "**hidden**"
    );

    stripe.charges.create({
      amount: cart.totalPrice * 100,
      currency: "usd",
      source: req.body.stripeToken,
      description: "Test Charge"
    }, function(err, charge) {
        if (err) {
            req.flash('error', err.message);
            return res.redirect('/checkout');
        }
        var order = new Order({
            user: req.user,
            cart: cart,
            address: req.body.address,
            name: req.body.name,
            paymentId: charge.id
        });
        order.save(function(err, result) {
            req.flash('success', 'Successfully bought product!');
            req.session.cart = null;
            res.redirect('/');  
        });
    });
});

module.exports = router;
var express=require('express');
var router=express.router();
var Cart=require('../models/Cart');
var Product=require(“../models/Product”);
var Order=require('../models/Order');
/*获取主页*/
router.get('/',函数(req,res,next){
var successsg=req.flash('success')[0];
Product.find(函数(错误、文档){
var productChunks=[];
var-chunkSize=3;
对于(变量i=0;i
所以,我就是这样解决这个错误的:

我调出了order对象中的每个字段,并在链接到req.body.address的checkout.form中发现了语法错误。修复错误后,“订单”现在显示在my db集合中


呸!感谢以色列。谢谢你花时间和我聊天,了解问题的真相

错误信息是什么?没有。登录并签出后,我无法看到mongo shell中的数据(在调用db.orders.find()之后),让我们来看看。尝试删除一些字段,看看会发生什么。我很高兴你解决了这个问题。