欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

快速开发一个问卷调查云应用(后端)

程序员文章站 2022-06-12 13:38:41
...

通过Sails.js开发RESTful API

阅读这篇blog大约需要5分钟

通过一个小例子MVP来学习一下Sails.js这个框架。模拟的场景需求是设计一个问卷调查。

快速开发一个问卷调查云应用(后端)

后端使用Sails.js,前端通过OpenUI5来实现。

The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. --Tom Cargill

创建模型

简单设计了一下,一个问卷会包含多个问题,每个用户填完后就是一个反馈。每个反馈里包含了全部的问题回答。主要包括这些数据:

  • Questionaires 问卷
  • Questions 问题
  • Feedbacks 反馈
  • Answers 每个问题的回答

依次通过sails的命令来创建api:

sails generate api Questionaires

sails generate api Questions

sails genreate api Feedbacks

sails genrate api Answers

Sails.js会通过Waterline的ORM来自动根据模型定义来自动生成表和关系。而且Sails.js默认自带了一个简单的数据库实现,它是通过JSON文件保存的。

自定义API

开发一个自定义的api,可以通过action来完成。

sails generate action /feedback/create

它会自动生成文件controller/feedback/create.js,定制代码写在create.js中。这里是接口函数代码:

fn: async function (inputs) {

 Questionnaires.create(q);
    
    const feedback = {
      "fb_owner": inputs.id
    };

    const createdFeedback = await Feedbacks.create(feedback).fetch();

    let answers = inputs.answers.map(
      (input) => {
        input.feedback = createdFeedback.id;
        return input;
        }
    );

    const createdAnswers = await Answers.createEach(answers).fetch();
    

    return createdFeedback;

  }

自定义路由

修改config/routes.js文件,增加一行配置:

  'POST /api/v1/feedback/create' : {action: 'feedback/create'},

API测试

http://localhost:1337/api/v1/feedback/create

POST数据创建一个问卷反馈:

{
"id": 11,
"answers": [
{
	"question": 21,
	"answer": 0
}, 
{
	"question": 22,
	"answer": 1
}, 
{
	"question": 23,
	"answer": 2
}
]
}

返回数据:
states 201 ok.

后台数据创建成功。

{
  "createdAt": 1581583005224,
  "updatedAt": 1581583005224,
  "id": 9,
  "fb_owner": 11
}

小结

在这个例子中只是用到了Sails.js里API的一小部分功能,它是一个类似Ruby on rails的JS框架,个人感觉还是很方便的,对于原型demo开发,能够节约不少的时间。

项目代码

  • https://github.com/rangwei/cloud-blogs/tree/master/b08/arctic-db

参考阅读

  • https://sailsjs.com/documentation/concepts
相关标签: Cloud nodejs