FindOneAndUpdate对我来说无法正常工作

时间:2018-12-01 23:00:13

标签: javascript node.js mongodb mongoose

我有一个应用程序,其中有一个教师数据库,其中包含用于班级的ID数组。创建新班级时,我正在尝试查找教师的数据库条目,并使用新班级的ID更新班级ID的数组。但是,当我尝试更新它时,什么也没发生。

这是我的代码:

<html>
<head>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://js.stripe.com/v3/"></script>

    <!-- When below three lines are included, stripe elements are incorrectly rendered -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>


    <script>
        $(document).ready(function(){

            var stripe = Stripe($('#spk').val());
            var elements = stripe.elements();

            var style = {
                base: {
                    // Add your base input styles here. For example:
                    fontSize: '16px',
                    lineHeight: '24px'
                }
            };

            var card = elements.create('card', {style: style});
            card.mount('#card-element');
            card.addEventListener('change', function(event) {
                var displayError = document.getElementById('card-errors');
                if (event.error) {
                    displayError.textContent = event.error.message;
                } else {
                    displayError.textContent = '';
                }
            });

            var form = document.getElementById('paymentMethodForm');
            form.addEventListener('submit', function(event) {
                event.preventDefault();
                stripe.createToken(card).then(function(result) {
                    if (result.error) {
                        var errorElement = document.getElementById('card-errors');
                        errorElement.textContent = result.error.message;
                    } else {
                        stripeTokenHandler(result.token);
                    }
                });
            });

            function stripeTokenHandler(token) {
                var form = document.getElementById('paymentMethodForm');
                var hiddenInput = document.createElement('input');
                hiddenInput.setAttribute('type', 'hidden');
                hiddenInput.setAttribute('name', 'stripeToken');
                hiddenInput.setAttribute('value', token.id);
                form.appendChild(hiddenInput);
                form.submit();
            }

        });
    </script>

</head>
<body>

<div style="width:400px;">
    <!-- sample test key from stripe website -->
    <input type="hidden" id="spk" value="pk_test_TYooMQauvdEDq54NiTphI7jx"/>
    <form action="/" method="POST" id="paymentMethodForm" class="d-block">
        <div class="form-row">
            <label for="card-element">Credit or debit card</label>
            <div id="card-element" style="">
            </div>
            <div class="alert-danger text-center" id="card-errors" role="alert"></div>
        </div>
        <div class="text-center">
            <br/>
            <button class="btn btn-primary">Add Payment Method</button>
        </div>
    </form>
</div>


</body>
</html>

1 个答案:

答案 0 :(得分:1)

如果您只是尝试将id附加到classIDs数组,则可以使用$ push运算符。

instructor.findOneAndUpdate(
  { "instructorEmail": data.Instructor },
  { $push: { classIDS: id } },
  { new: true },
  (err, updatedDoc) => {
    // what ever u want to do with the updated document
  })
相关问题