Node.js ValidationError:发票验证失败:日期:mongoDB中的转换到日期失败

Node.js ValidationError:发票验证失败:日期:mongoDB中的转换到日期失败,node.js,mongodb,Node.js,Mongodb,我试图创建一个创建发票的应用程序,在遇到此错误之前,该应用程序工作正常: (node:21336) UnhandledPromiseRejectionWarning: ValidationError: Invoice validation failed: date: Cast to Date failed for value "29-10-2020" at path "date" at new ValidationError (C:\Users\mynam

我试图创建一个创建发票的应用程序,在遇到此错误之前,该应用程序工作正常:

(node:21336) UnhandledPromiseRejectionWarning: ValidationError: Invoice validation failed: date: Cast to Date failed for value "29-10-2020" at path "date"
at new ValidationError (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\error\validation.js:31:11)
at model.Document.invalidate (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\document.js:2394:32)
at model.$set (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\document.js:1175:12)
at model._handleIndex (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\document.js:930:14)
at model.$set (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\document.js:874:22)
at model.Document (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\document.js:136:12)
at model.Model (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\model.js:93:12)
at new model (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\model.js:4419:15)
at model (C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\node_modules\mongoose\lib\model.js:4414:16)
at C:\Users\mynam\Desktop\covid-19\IWP_Accounting-Project_18BCI0168\routes\invoice.js:58:13
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:21336) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
发票模型

const mongoose=require('mongoose'))
const Schema=mongoose.Schema;
const InvoiceItem=require(“./InvoiceItem”)
const InvoiceItemSerialNumber=require(“./serialNumber”)
const InvoiceSchema=新模式({
partyId:{type:String,trim:true,默认值:“”,必需:true},
日期:{type:date,trim:true,默认值:''},
编号:{type:String,trim:true,默认值:''},
totalAmount:{type:Number,trim:true,默认值:''},
旁白:{type:String,trim:true,默认值:''},
路径:{type:String,trim:true,默认值:''},
companyId:{type:String,trim:true,默认值:“”,必需值:true}
})
InvoiceSchema.statics.findById=async(\u id)=>{
console.log(_id)
const invoice=wait invoice.findOne({
_身份证
})
如果(!发票){
抛出新错误('找不到发票')
}
//console.log(用户)
退货发票
}
InvoiceSchema.statics.deleteinvoice=异步(\u id)=>{
试一试{
//日志(“内部函数”,公司ID,数据类型)
const res=wait Invoice.findbyianddelete(\u id)
如果(!res){
抛出newError('没有具有给定id的发票')
}
返回真值
}
捕获(e)
{
控制台日志(e)
}
}
InvoiceSchema.statics.findByCompanyId=async(companyId)=>{
const invoices=wait invoices.find({companyId})
如果(!发票)
{
抛出新错误(“未找到发票”)
}
退回发票
}
InvoiceSchema.statics.updateinvoice=async(partyid,数据)=>{
试一试{
//日志(“内部函数”,partyid,数据类型)
const res=wait Invoice.updateOne({u id:partyid},数据)
如果(!res){
抛出newError('没有具有给定id的发票')
}
返回真值
}
捕获(e)
{
控制台日志(e)
}
}
InvoiceSchema.statics.countTotalDoucments=async(companyId)=>{
试一试{
console.log(公司ID)
const res=wait Invoice.where({companyId:companyId}).countDocuments()
如果(!res){
抛出新错误('没有具有给定id的发票')
}
返回res
}
捕获(e)
{
控制台日志(e)
}
}
const Invoice=mongoose.model('Invoice',InvoiceSchema);
module.exports=发票;

我们开始:
日期:{type:date,trim:true,默认值:'}
。构造函数需要一个
Date
对象,但是您传递了一个字符串
“29-10-2020”

看看:

警告

“DD-MM-YYYY”的行为也未定义。 一些浏览器会尝试猜测格式。有些人会回来

var d=新日期(“2015年3月25日”)

那正是你遇到的地方


我对默认设置感到有点惊讶。为什么要为
数字
日期
数据类型使用默认的字符串
'

请不要粘贴(几乎不可读)图像。错误和代码使用格式化文本。很抱歉,编辑了问题。错误堆栈准确地告诉您错误出现的位置:第58行的file
C:\Users\mynam\Desktop\covid-19\IWP\u Accounting-Project\u 18BCI0168\routes\invoice.js
。注意,你真的在你的个人桌面文件夹中安装了应用程序吗?不要把整个文件都放进去。找到错误并提供相关部件。因此,它不是一个“代码分析服务”。mongoose日期类型以这种形式接收数据
2002-12-09
,而您是以
29-10-2020
的形式提供数据的,这就是为什么会出现错误的原因。我是否应该将构造函数更改为传入字符串?这样做是否会修复主要错误(即使这不是正确的做法),或者我是否可以更改通过文本字段传递的日期格式?我是否可以请求您进行聊天会话,执行此操作后我有一些疑问和错误我不是免费的JavaScript培训师。实际上,到目前为止,我从未使用过mongoose或node.js。如果你面临问题,请提出新问题。在互联网上,你应该可以找到数千个如何创建日期对象的例子。日期对象的问题已经解决了,我想,但是现在invoice.js给出了一些其他错误,所以我想澄清一下,我只需要关于如何创建日期对象的指导,如果不可能,我理解,谢谢你的帮助!