Только начал разбираться с mongo/mongoose.
На данный момент смог сделать получение всех пользователей, получение пользователя по id и добавление пользователя в БД.
Не могу разобраться как обновить/модифицировать пользователя при запросе PATCH (/users/:id)
Подскажите пожалуйста. Пытался сделать, смотрел в документации методы, но что то не получалось.
И еще вопрос. Как научиться правильно обрабатывать ошибки в node.js. Очень запутано как то все с обработкой ошибок.
const Koa = require("koa");
const mongoose = require("mongoose");
const bodyParser = require("koa-bodyparser");
const app = new Koa();
const Router = require("koa-router");
const router = new Router();
app.use(bodyParser());
mongoose.Promise = Promise;
mongoose.connect("mongodb://localhost/test", { useMongoClient: true });
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
default: "mail@gmail.com"
},
cdate: Date,
mdate: Date,
displayName: {
type: String,
required: true,
default: "Anonimous"
}
});
const User = mongoose.model("User", userSchema);
const user = new User({
email: "user@gmail.com",
cdate: Date.now(),
mdate: Date.now(),
displayName: "user"
});
router.get("/users", async (ctx, next) => {
const users = await User.find({});
ctx.body = users.map(user => ({
name: user.displayName,
email: user.email
}));
});
router.get("/users/:id", async (ctx, next) => {
if (!mongoose.Types.ObjectId.isValid(ctx.params.id)) {
ctx.throw(404, "invalid Report id");
}
const user = await User.findById(ctx.params.id);
if (!user) {
ctx.throw(404, "User not found");
}
ctx.body = {
user: user.displayName,
email: user.email
};
});
router.post("/users", async (ctx, next) => {
try {
const user = User.create({
email: ctx.request.body.email,
displayName: ctx.request.body.displayName,
cdate: Date.now(),
mdate: Date.now()
});
} catch (err) {
ctx.throw(400, "Error...");
}
});
app.use(router.routes());
app.listen(3000);