Mongoose或MongoDB的架构定义?

mongoose是用来定义一个模式。 对? 是否有可能通过mongo Shell使用mongoDB创build模式? 喜欢

例如:name:String

MongoDB不支持模式。 这是一个基于模式的文档数据库。

Mongoose是一个ODM(对象文档映射器),它有助于通过模式与MongoDB交互,另外它还支持validation和挂钩。

Mongoose有助于在对象/模型方面与MongoDB进行交互,因此程序员不需要了解记住MongoDB的语句。

此外,Mongoose提供了很多CRUD操作方法,以更好地理解数据库操作。

你可以在这里查看例子

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/mongoose http://mongoosejs.com/docs/

基本上mongodb是模式较less的数据库,我们不能直接在mongodb中创build模式。 使用mongoose,我们可以创build一个模式。 使用mongoose简单的CRUD操作,更多信息请参阅这个链接

的package.json

{ "name": "product-api", "main": "server.js", "dependencies": { "express": "~4.0.0", "body-parser": "~1.0.1", "cors": "2.8.1", "mongoose": "~3.6.13" } } 

product.js

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ProductSchema = new Schema({ title: String, price: Number, instock : Boolean, photo : String , }); module.exports = mongoose.model('Product', ProductSchema); // module.exports = mongoose.model('Product', ProductSchema,'optiponally pass schema name '); 

server.js

 var express = require('express'); var bodyParser = require('body-parser'); var cors = require('cors'); var app = express(); var mongoose = require('mongoose'); var product = require('./product'); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); var port = process.env.PORT || 8090; var router = express.Router(); mongoose.connect('mongodb://localhost:27017/products'); // Middle Route router.use(function (req, res, next) { // do logging // do authentication console.log('Logging of request will be done here'); next(); // make sure we go to the next routes and don't stop here }); router.route('/products').post(function (req, res) { console.log("in add"); var p = new product(); p.title = req.body.title; p.price = req.body.price; p.instock = req.body.instock; p.photo = req.body.photo; p.save(function (err) { if (err) { res.send(err); } console.log("added"); res.send({ message: 'Product Created !' }) }) }); router.route('/products').get(function (req, res) { product.find(function (err, products) { if (err) { res.send(err); } res.send(products); }); }); router.route('/products/:product_id').get(function (req, res) { product.findById(req.params.product_id, function (err, prod) { if (err) res.send(err); res.json(prod); }); }); router.route('/products/:product_id').put(function (req, res) { product.findById(req.params.product_id, function (err, prod) { if (err) { res.send(err); } prod.title = req.body.title; prod.price = req.body.price; prod.instock = req.body.instock; prod.photo = req.body.photo; prod.save(function (err) { if (err) res.send(err); res.json({ message: 'Product updated!' }); }); }); }); router.route('/products/:product_id').delete(function (req, res) { product.remove({ _id: req.param.product_id }, function (err, prod) { if (err) { res.send(err); } res.json({ message: 'Successfully deleted' }); }) }); app.use(cors()); app.use('/api', router); app.listen(port); console.log('REST API is runnning at ' + port);