node.js - 获取用户 ID 时遇到问题
问题描述
所以我正在构建一个网络应用程序,我有很多工作。但是我正在尝试将我的 user._id 链接到我的项目数据库。但是,当我尝试使用邮递员发布项目时,应用程序崩溃说它无法读取 null 的属性“_id”。我知道我遗漏了一些东西,但老实说,我无法弄清楚我需要实现哪些其他代码。任何帮助都会很棒。谢谢
这是 UserSchema 的代码:
const mongoose = require('mongoose');
const passportLocalMongoose = require("passport-local-mongoose");
const UserSchema = new mongoose.Schema({
username: {
type: String,
trim: true,
unique: true,
required: true,
minlength: 3,
maxlength: 15
},
firstName: {
type: String,
required: true,
minlength: 3,
maxlength: 15
},
lastName: {
type: String,
required: true,
minlength: 3,
maxlength: 15
},
email: {
type: String,
unique: true,
required: true
},
resetPasswordToken: String,
resetPasswordExpires: Date,
isAdmin: {
type: Boolean,
default: false
}
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("user", UserSchema);
这是 ItemSchema 的代码:
const mongoose = require('mongoose');
const User = require('./user');
const ItemSchema = new mongoose.Schema({
name: {
type: String,
required: true,
minlength: 3,
maxlength: 20
},
description: {
type: String,
required: true
},
price: {
type: Number,
required: true
},
createdBy: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
createdAt: {
type: Date,
default: Date.now
}
});
module.exports = mongoose.model("items", ItemSchema);
这是引发错误的路线的代码:
const express = require("express");
const router = express.Router();
const User = require("../models/user");
router.route("/item/add")
.post(function(req, res) {
User.findById(req.user._id, function(user, err) {
if (err) {
console.log(err);
}
var item = new Item();
item.name = req.body.name;
item.description = req.body.description;
item.price = req.body.price;
item.createdBy = { id: req.user._id, username: req.user.username };
item.save(function(err) {
if (err) {
res.send(err);
}
res.json({ message: "Item was successfully saved" });
console.log(item);
});
});
});
解决方案
您需要在邮递员中以 json 格式发送数据,例如:
{'id':1, 'name':'jhon doe', 'email':'jhondoe@example.com'}
在您的后端文件中,您需要调用
req.body.id
notreq.user._id
推荐阅读
- junit - 错误:getaddrinfo ENOTFOUND api.appcenter.ms api.appcenter.ms:443 在将文件上传到 appcenter 时抛出
- mongodb - Mongodb查询以匹配由数字标识的子文档中的值
- javascript - Three.js:如何在两个对象之间创建过渡?
- html - 在另一个表中有一个表时对齐两个 div
- php - 如何显示闪光按摩 Laravel 5.7
- c - 链表数组中的先前插入被最近的插入替换
- hyperledger-fabric - Hyperledger Explorer 无法连接到网络
- python-3.x - 如何修改我的代码以包含每条推文的地理位置并让机器以 15 分钟的休息时间连续运行代码?
- kotlin - 如何在 Kotlin 中对 IntArray 进行 Base64 编码
- python - 如何定位下拉菜单并选择没有 id 和类名且带空格的值