美文网首页
网站 adonisjs - 其他笔记

网站 adonisjs - 其他笔记

作者: 自走炮 | 来源:发表于2020-08-10 00:58 被阅读0次
npm i -g @adonisjs/cli

adonis new myproject
cd myproject
adonis serve --dev # 启动

# 新建 app/Controllers/Http/SiteController.js
# 类型 ForHttpRequests,同理 post 和 admin/post
adonis make:controller site
adonis make:controller admin/post --resource # 自动curd
# 新建 app/Models/Post.js,修改 PostController.js
adonis make:model post
# 新建 resource/views/posts/index.edge,同理 post/show.edge
adonis make:view post.index
  • 项目结构 myproject/
    • app/
      • Models/
        • Post.js
      • Controllers/Http/
        • SiteController.js
        • PostController.js
        • Admin/PiteController.js
    • start/
      • app.js
      • routes.js
    • config/
    • database/
    • resource/views/
      • posts/index.edge
      • posts/show.edge
    • server.js
    • .env.development.local
      • 内容 VUE_APP_API_URL=http://localhost:3000/admin/api
      • 内容 VUE_APP_PRIMARY_KEY=_id
// routes.js
const Route = use("Route");
Route.get("/", "SiteController.index");
Route.get("/posts", "PostController.index");
Route.get("/posts/:id", "PostController.show");
Route.resource("/admin/api/posts", "Admin/PostController"); // 自动curd

// SiteController.js
("use strict");
class SiteController {
  index() {
    return "home";
  }
}
module.exports = SiteController;

// PostController.js
("use strict");
const Post = use("App/Models/Post");
class PostController {
  async index({ request, view }) {
    // return "posts" + request.input("page"); // 获取 /posts?page= 数据
    // await Post.create({ title: "标题" });
    const posts = await Post.all();
    return view.render("posts.index", {
      posts: posts.toJSON(),
    });
  }
  async show({ params }) {
    const post = await Post.find(params.id); // 获取 /posts/id 数据
    return view.render("posts.show", {
      post: post.toJSON(),
    });
  }
}
module.exports = PostController;

// Admin/PostController.js
("use strict");
const Post = use("App/Models/Post");
class PostController {
  // Route.resource 含 index create store show edit update destroy
  async index({ request, response, view }) {
    // 路由 /posts
    return await Post.query().paginate(1, 10);
  }
  async create({ request, response, view }) {
    // 路由 /posts/create
  }
  async store({ request, response }) {
    // 路由 POST /posts
    const data = request.only(["title"]);
    const model = new Post();
    model.fill(data);
    await model.save();
    return model;
  }
  async show({ params, request, response, view }) {
    // 路由 /posts/:id
    return await Post.find(params.id);
  }
  async edit({ params, request, response, view }) {
    // 路由 /posts/:id/edit
  }
  async update({ params, request, response }) {
    // 路由 PUT或PATCH posts/:id
    const data = request.all();
    const model = await Post.find(params.id);
    model.merge(data);
    await model.save();
    return model;
  }
  async destroy({ params, request, response }) {
    // 路由 DELETE posts/:id
    const model = await Post.find(params.id);
    model.merge(data);
    await model.delete();
    return { success: true };
  }
}
module.exports = PostController;
<!-- index.edge -->
<h1>我的博客</h1>
<ul>
  @each(post in posts)
  <li><a href="/posts/{{post._id}}">{{post.title}}</a></li>
  @endeach
</ul>

<!-- show.edge -->
<h1>{{post.title}}</h1>
<p>创建时间:{{post.created_at}}</p>

相关文章

网友评论

      本文标题:网站 adonisjs - 其他笔记

      本文链接:https://www.haomeiwen.com/subject/oxegrktx.html