Я делаю веб-сайт, используя стек MERN, мне удалось вставить данные из форм в передний конец реагирования на mongodb, но когда я создал новую форму, я получил ошибку приведения к массиву.Я попытался привести к другому массиву в моей модели mongroose, и это сработало просто отлично.система представляет собой фиктивный онлайн-банк, никогда не предназначенный для использования в любой производственной среде
Моя модель:
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const Schema = mongoose.Schema;
// Creates the needed schema
let userSchema = new Schema({
name: String,
created_at: Date,
updated_at: Date,
balance: Number,
address: String,
ssn: Number,
bankNumber: Number,
cards: [
{
type: String, // Visa eller Mastercard
cardNumber: Number,
cvc: Number,
expirationDate: Number,
pin: Number,
status: Boolean,
dailyLimit: '9900'
}
],
whitdrawal: [
{
amount: Number,
date: Date, // Skriv auto date logikk
reason: String
}
]
});
// Inserts
userSchema.pre('save', function(next) {
const currentDate = new Date();
this.updated_at = currentDate;
this.date = currentDate;
if (!this.created_at) this.created_at = currentDate;
next();
});
// Creates model for schema
const AtmUser = mongoose.model('AtmUser', userSchema);
// Export so it is available for the rest of the application
module.exports = AtmUser;
Экспресс-метод для сохранения этих данных, данные отправляются из внешнего интерфейса и отображаются всообщение об ошибке терминала
app.post('/api/newUser', function(req) {
const newUser = AtmUser({
name: req.body.name,
balance: req.body.balance,
address: req.body.address,
ssn: req.body.ssn,
bankNumber: req.body.bankNumber,
cards: [
{
type: req.body.type, // Visa eller Mastercard
cardNumber: req.body.cardNumber,
cvc: req.body.cvc,
expirationDate: req.body.expirationDate,
pin: req.body.pin,
}
],
});
newUser.save(function(err) {
if(err) throw err;
console.log('A new user has been made')
})
})
При попытке привести к выводу из арта вместо массива карт все работает как положено, часть сообщения об ошибке, которое я получаю в терминале
events.js:167
[0] throw er; // Unhandled 'error' event
[0] ^
[0] ValidationError: AtmUser validation failed: cards: Cast to Array failed for value "[ { type: '234234234' } ]" at path "cards"
[0] at new ValidationError (/Users/andreas/Documents/prosjekt/atm/node_modules/mongoose/lib/error/validation.js:30:11)
Я былпытаюсь найти ошибку в течение нескольких часов, но просто не могу ее найти, спасибо за все ответы!Я был бы рад выложить больше кода или полное сообщение об ошибке, если это поможет