Редактировать и создавать HTML контент, используя node.js - PullRequest
1 голос
/ 08 января 2020

Я хочу создать html контент, который выглядит примерно так, используя node.js.

<div class="outputs">
   ...
</div>

У меня есть следующий код:

var mongoose = require("mongoose");
var express = require("express");
var bodyParser = require("body-parser");
var Url = require("./models/Url");
var shortId = require("shortid");
var http = require("http");
var app = express();
var { JSDOM } = jsdom;

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
mongoose.connect(process.env.MLAB_URI);

app.get("/urls", (req, res, next) => {
  Url.find({}, function(err, data) {
    res.json(data);
    console.log(data.length);
  });
});

app.get("/deletebase", (req, res, next) => {
  Url.deleteMany({}, function(err, data) {
    res.json(data);
  });
});

app.use(express.static(__dirname + "/"));

app.get("/:shortUrl", function(req, res, next) {
  Url.findOne({ shortUrl: req.params.shortUrl }, function(err, findUrl) {
    if (err) console.log(err);
    if (!findUrl) {
      return next({ status: 400, message: "unknown shorturl" });
    }
    res.redirect(findUrl.longUrl);
  });
});

app.post("/", function(req, res) {
  var url = new Url(req.body);
  var hostname = req.headers.host;
  var expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi;
  var regex = expression;
  if (regex.test(url) === true) {
    url.shortUrl = shortId.generate();
    url.fullUrl = "https://" + hostname + "/" + url.shortUrl;
    url.save(function(err, savedUrl) {
      if (err) console.log(err);
      res.redirect("https://" + hostname);
    });
  } else {
    res.redirect("https://" + hostname);
  }
});

var options = {
  runScripts: "dangerously",
  resources: "usable"
};

app.listen(3000, function() {
  console.log("RUNNING");
});

Я хочу получить длину данных и создайте столько объектов div с longUrl и shortUrl объектами. Также, когда база данных будет обновлена, должен быть создан новый объект div, и когда я удаляю информацию базы данных, все элементы div тоже должны быть удалены, возможно ли это сделать?

1 Ответ

1 голос
/ 08 января 2020

Вы должны использовать шаблонизатор для этого. Два самых популярных для NodeJs: pug (ранее Jade) ** и hbs (Handlebars. js) **.
Существует множество других шаблонизаторов ЗДЕСЬ , которые вы могли бы рассмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...