成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

node express mongoose簡單實現(xiàn)全棧之增刪改查

AndroidTraveler / 772人閱讀

摘要:作為一個有志向的前端,怎么能不搞搞全棧呢。。。地址歡迎大家多多交流前端技術(shù)啊,如果大家喜歡的話,請給我一個小小的哦

作為一個有志向的前端,怎么能不搞搞全(zhuang)棧(bi)呢。。。
說搞咱就搞啊,后端就用node,數(shù)據(jù)庫就用mongodb,前端呢,呃,再搞個node的web框架express,思路搞定,開始搭建我們的環(huán)境,搭建之前還是先看看我們的目標和成果

項目的目標和成果

1.下載mongodb

mongodb官網(wǎng): https://www.mongodb.com/downl...
下載好代碼好,進入bin文件夾,啟動./mongod,再新打開一個terminal(終端),啟動./mongo

至此我們的數(shù)據(jù)庫已經(jīng)搭建完畢,我迫不及待的想進行增(zhuang)刪(bi)改(da)查(fa)了。這時候有的同學就有疑問了,你這上面不是mongoose嗎,跟mongodb有啥關(guān)系啊,看下圖,簡單來說,我moogoose可以隨意蹂躪你mongodb里面的數(shù)據(jù),

2.搭建數(shù)據(jù)結(jié)構(gòu)

首先先來連接一下我們的數(shù)據(jù)庫,其次我們來定義一下數(shù)據(jù)結(jié)構(gòu),再搞個model(mongoose里面叫document)

// 數(shù)據(jù)庫連接
var uuid = require("node-uuid");
var mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/mart");

var db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", function() {
    console.log("we are connected");
});

// Schema定義數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
var ProductSchema = mongoose.Schema({
    id: {
        type: String,
        default: uuid.v1
    },
    name: String,
    price: Number,
    url: String
});

// Schema只是定義了數(shù)據(jù)結(jié)構(gòu),而對數(shù)據(jù)的處理需要model去實現(xiàn)
var Product = mongoose.model("Product", ProductSchema);

module.exports = Product;
3.建立前端的頁面、路由和請求的接口

node+express的搭建這里就不詳細介紹,對于大家來說灑灑水啊

var express = require("express");
var path = require("path");
var router = require("./routes");
var bodyParser = require("body-parser");

var app = express();

// view engine set
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

// 托管靜態(tài)文件
app.use(express.static("public"));

app.use("/", router);

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log("Example app listening at http://%s:%s", host, port);
});

定義增刪改查的接口類型和路由跳轉(zhuǎn),由于偷懶,就先把接口和路由寫在一起了

var express = require("express");
var router = express.Router();
var productModel = require("../mongoose");

router.get("/", function(req, res) {
    res.redirect("/list");
})

router.get("/list", function(req, res) {
    var list = [];
    productModel.find(function(err, products) {
        list = products;
        res.render("list", {
            list
        })
    });
})

// 添加商品
router.post("/admin/add/product", function(req, res) {
    var item = req.body;
    var product = new productModel(req.body);

    product.save(function(err) {
        res.send({
            code: "success",
            data:{}
        })
    });    
})

// 編輯商品
router.post("/admin/edit/product", function(req, res) {
    var item = req.body;
    console.log(item);
    productModel.update({_id: item.id}, item, function(err) {
        res.send({
            code: "success",
            data:{}
        })
    });    
})

// 刪除商品
router.post("/admin/delete/product", function(req, res) {
    console.log(req.body.id);
    productModel.findByIdAndRemove({_id: req.body.id}, {}, 
        function() {
            res.send({
                code: "success",
                data:{}
            })
        }
    )
})

// 搜索商品
router.get("/list/search", function(req, res) {
    var list = [],
        price = {};
    if (req.query.price1) price.$gte = req.query.price1;
    if (req.query.price2) price.$lte = req.query.price2;

    productModel.find({
        price
    }, function(err, products) {
        list = products;
        res.render("list", {
            list
        })
    });
})

module.exports = router;

mongoose具體怎么操作數(shù)據(jù)庫的,大家可以去查看官網(wǎng)的API哈,http://mongoosejs.com/

結(jié)語

我們簡單的全棧之旅就結(jié)束了,是不是灰常的簡單,大家的心情是不是灰常的激動(我現(xiàn)在TMD是一個全棧了,2333333333),具體的操作放在github上,本文只是提供一個簡單的思路。
github地址: https://github.com/warplan/no...
歡迎大家多多交流前端技術(shù)啊,如果大家喜歡的話,請給我一個小小的star哦

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95012.html

相關(guān)文章

  • 邁出全棧第一步,vue+node+mysql獨立完成前后端分離的增刪改流程

    摘要:本使用創(chuàng)建本地服務器,在就能完成全部流程,并不需要線上服務器。路徑要與后端接口一致。后端返回成功后,前端數(shù)據(jù)中對應的元素也要刪掉,更新視圖??刂破骼锬靡粋€方法出來說一下吧,完整的代碼都在。讀取操作完成后調(diào)用釋放連接。 寫在前面 本文只是本人學習過程的一個記錄,并不是什么非常嚴謹?shù)慕坛?,希望和大家一起共同進步。也希望大家能指出我的問題。適合有一定基礎,志在全棧的前端初學者學習,從點擊按鈕...

    fsmStudy 評論0 收藏0
  • Node.js學習之路23——Node.js利用mongoose連接mongodb數(shù)據(jù)庫

    摘要:類比一下你有一個巨型停車場,里邊分了不同的停車區(qū)集合,這里的,每個停車區(qū)可以停很多車下文提到的,相當于每個數(shù)據(jù)集合里邊可以有很多張數(shù)據(jù)表。 Node.js利用mongoose連接mongodb數(shù)據(jù)庫 Node.js連接mongodb數(shù)據(jù)庫有很多種方法,通過mongoose模塊引入是其中的一個方法 代碼組織結(jié)構(gòu) |---|根目錄 |---|---|connect.js(mongoose測...

    ssshooter 評論0 收藏0
  • Node.js學習之路23——Node.js利用mongoose連接mongodb數(shù)據(jù)庫

    摘要:類比一下你有一個巨型停車場,里邊分了不同的停車區(qū)集合,這里的,每個停車區(qū)可以停很多車下文提到的,相當于每個數(shù)據(jù)集合里邊可以有很多張數(shù)據(jù)表。 Node.js利用mongoose連接mongodb數(shù)據(jù)庫 Node.js連接mongodb數(shù)據(jù)庫有很多種方法,通過mongoose模塊引入是其中的一個方法 代碼組織結(jié)構(gòu) |---|根目錄 |---|---|connect.js(mongoose測...

    jsummer 評論0 收藏0
  • 使用express+mongoose對mongodb實現(xiàn)刪改操作

    摘要:項目地址寫在開頭本文主要分享我如何使用對實現(xiàn)增刪改查操作,感謝社區(qū)所有精品文章的幫助,以及的開源項目對我的啟發(fā)。我們這個項目是建立一個班級學生管理系統(tǒng),能夠?qū)W生的姓名及學號進行增刪改查的操作。 項目地址:https://github.com/jrainlau/mongoose_cru... 寫在開頭 本文主要分享我如何使用express+mongoose對mongodb實現(xiàn)增刪改查...

    Markxu 評論0 收藏0

發(fā)表評論

0條評論

AndroidTraveler

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<