У меня возникла проблема в моем NodeJs API и Пн go, где я должен опубликовать и заполнить имя пользователя строкой в поле Имя пользователя.
Когда я публикую сообщение, я получаю эту ошибку:
"Ошибка типа: newPost.save (...). Заполнение не является функцией"
Модель поста:
const mongoose = require("mongoose");
const schema = {
text: {
type: String,
required: true,
unique: true
},
username: {
type: mongoose.Schema.Types.String,
ref: "Profile",
required: true
},
image: {
type: String,
default: "https://via.placeholder.com/150",
required: false
},
createdAt: {
type: Date,
default: Date.now,
required: false
},
updatedAt: {
type: Date,
default: Date.now,
required: false
}
};
const collectionName = "posts";
const postSchema = mongoose.Schema(schema);
const Post = mongoose.model(collectionName, postSchema);
module.exports = Post;
Здесь я делаю метод поста:
postRouter.post("/", async (req, res) => {
try {
const newPost = await Posts.create(req.body);
const username = await Profiles.findOne({
username: req.body.username
});
if (!username) res.status(400).send("Username not found");
newPost.save().populate(username.username);
res.send({ success: "Post added", newPost });
} catch (error) {
res.status(500).send(error);
console.log(error);
}
});
Вывод ответа, как должно быть:
{
"_id": "5d93ac84b86e220017e76ae1", //server generated
"text": "this is a text 12312 1 3 1", <<--- THIS IS THE ONLY ONE SENDING"
"username": "admin",<-- FROM REQ.body or params ???
"createdAt": "2019-10-01T19:44:04.496Z", //server generated
"updatedAt": "2019-10-01T19:44:04.496Z", //server generated
"image": ... //server generated on upload, set a default here
}
Я буду Также будьте рады узнать, имеет ли смысл идея подобного маршрута, поскольку в сообщении необходимо указать имя пользователя, если лучше указать его в теле или в параметрах запроса.