本页
    
    Node示例
MemFire Cloud 提供Python、Java、spring、golang、nodejs、小程序开发示例,讲述如何编译执行程序,帮助用户如何采用多种语言来使用连接MemFire Cloud的云数据库。
示例下载地址   
Node示例下载地址:https://gitee.com/memfiredb/memfiredb-example-nodejs
环境描述 
• node 12
创建示例应用  
1、非加密连接 
• 登录cloud.memfiredb.com创建非证书认证数据库test,点击“连接信息”按钮,获取数据库的连接信息。 
(1)编辑代码文件,文件内容如下: 
controller.js:
  const { Client } = require("pg");
let dbUrl = ''
exports.configuration = (req, res) => {
  // Validate request
  if (!req.body) {
    res.status(200).send({
      message: "Req body is empty!"
    });
    return;
  }
  const d = req.body;
  // console.log(d)
  dbUrl = `postgresql://${d.username}:${d.passwd}@${d.host}:${d.port}/${d.dbname}`;
  res.status(200).send({
    message: dbUrl
  });
  return;
}
exports.sync = async (req, res) => {
  // Validate request
  if (!req.body) {
    res.status(200).send({
      message: "Req body is empty!"
    });
    return;
  }
  const data = req.body[0];
  const table = 'dac' + new Date().getTime();
  delete data._timestamp;
  delete data._url;
  const attr = Object.keys(data);
  let columns = '';
  let sentence = '';
  for (let i = 0; i < attr.length; i++) {
    columns = columns + `${attr[i]},`
    sentence = sentence + `${attr[i]} text,`
  }
  columns = columns.substr(0, columns.length - 1);
  sentence = sentence.substr(0, sentence.length - 1);
  const valLen = data[attr[0]].length;
  let values = '';
  for (let i = 0; i < valLen; i++) {
    let val = '(';
    for (let j = 0; j < attr.length; j++) {
      val = val + `'${data[attr[j]][i]}'` + ','
    }
    val = val.substr(0, val.length - 1) + ')';
    values = values + val + ','
  }
  values = values.substr(0, values.length - 1);
  const createTable = `CREATE TABLE ${table} (${sentence});`
  const insertTable = `INSERT INTO ${table}(${columns}) VALUES ${values};`
  const client = new Client({
    connectionString: dbUrl
  })
  await client.connect()
  await client.query(
    createTable,
    (err, result) => {
      if (err) {
        res.status(200).send('db create failed');
      }
      res.status(200).send('ok')
    }
  )
  await client.query(
    insertTable,
    (err, result) => {
      client.end();
      if (err) {
        res.status(200).send('db update failed');
      }
      res.status(200).send('ok')
    }
  )
};
  
  routes.js
  module.exports = app => {
  const ctl = require("../controllers/controller.js");
  const router = require("express").Router();
  router.post("/config", ctl.configuration);
  router.post("/sync", ctl.sync);
  app.use("/api", router);
};
  
  server.js
  const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
const corsOptions = {
  origin: "*"
};
app.use(cors(corsOptions));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// simple route
app.get("/", (req, res) => {
  res.json({ message: "Welcome to memfire dac api" });
});
require("./app/routes/routes")(app);
// set port, listen for requests
const PORT = process.env.PORT || 9090;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});
  
  2、执行程序
node server.js