Node.js 猫鼬误差;无法设置属性';x';空的

Node.js 猫鼬误差;无法设置属性';x';空的,node.js,mongodb,mongoose-schema,Node.js,Mongodb,Mongoose Schema,我目前正在使用一个自定义的sharex上传基于nodejs的服务器, 但无论我怎么尝试,都在努力将上传的数据保存到数据库中 TypeError:无法将属性“X”设置为nullX=其中一个字段。 我不明白这是为什么,应用程序可以访问mongo数据库,这是由一个console.log()通知我它已连接到数据库确认的 但在处理上传时它就失败了,我完全不明白这一点,因为我在Discord机器人上使用了类似的设置,没有任何问题,所以我不明白为什么 有人能解释我做错了什么吗 上传时的输出: { 名称:“Sh

我目前正在使用一个自定义的sharex上传基于nodejs的服务器, 但无论我怎么尝试,都在努力将上传的数据保存到数据库中
TypeError:无法将属性“X”设置为null
X=其中一个字段。 我不明白这是为什么,应用程序可以访问mongo数据库,这是由一个
console.log()
通知我它已连接到数据库确认的

但在处理上传时它就失败了,我完全不明白这一点,因为我在Discord机器人上使用了类似的设置,没有任何问题,所以我不明白为什么

有人能解释我做错了什么吗

上传时的输出:

{
名称:“ShareX_3oFMZJeV2S.png”,
数据:,
尺寸:14132,
编码:“7bit”,
tempFilePath:“”,
错:,
mimetype:'image/png',
md5:'b70962199714328ed2a889b2fc211671',
mv:[功能:mv]
}
W8LOR5q巴布亚新几内亚
无效的
保存到数据库

console.log(req.files.file)
让数据=req.files.file
设hex=randomString(7,false);
让mimeType=extension(data.mimeType)
设buf=data.data;
设id=`${hex}.${mimeType}`;
等待上传。完成({
文件名:id
},异步(错误,u)=>{
if(err)console.log(err);
如果(!u){
console.log(十六进制,mimeType)
控制台日志(u)
u、 fileName=id;
u、 fileID=hex;
u、 fileMimetype=mimeType;
u、 fileBuffer=buf;
u、 filePrivate=false;
等待u.save(),然后(r=>{
返回“测试”
}).catch((e)=>{
返回`ERROR:${e}`;
});
}
});
模式

const{Schema,model}=require('mongoose');
const uploadSchema=Schema({
文件名:String,
fileImage:String,
fileID:String,
fileMimetype:String,
filePbuffer:缓冲区,
filePrivate:Boolean,
上载日期:{
类型:日期,
默认值:Date.now
}
});
module.exports=模型('upload',uploadSchema);

您正在检查u是否为null,如果为null,则尝试在其上设置属性。如果u为null,则无法转到
“u.filename=id”
,因为u不存在,无法向其中添加文件名。你需要像这样的东西:

if (!u) {
  const newObj = {}
  newObj.fileName = id;
  newObj.fileID = hex;
  newObj.fileMimetype = mimeType;
  newObj.fileBuffer = buf;
  newObj.filePrivate = false;
  await newObj.save().then(r => {
    return 'test'
  }).catch((e) => {
    return `ERROR: ${e}`;
  });
}

if(!u){
这不应该是
if(u){
?或者,在出现错误时提前返回。它当前正在检查是否不存在,如果不存在,则创建条目。
if (!u) {
  const newObj = {}
  newObj.fileName = id;
  newObj.fileID = hex;
  newObj.fileMimetype = mimeType;
  newObj.fileBuffer = buf;
  newObj.filePrivate = false;
  await newObj.save().then(r => {
    return 'test'
  }).catch((e) => {
    return `ERROR: ${e}`;
  });
}