我正在使用mongodb compass和koa js创建一个简单的CRUD应用程序.这是我正在使用的dao文件
const products = require('./index').db('store').collection('products');
const ObjectId = require('mongodb').ObjectId;
const save = async ({name, description,qty,price}) => {
const result = await products.insertOne({name, description,qty,price});
return result;
}
const getAll = async () => {
const cursor = await products.find();
return cursor.toArray();
}
const update = async (id, {name,description,qty,price}) => {
const result = await products.replaceOne({_id:ObjectId(id)}, {name,description,qty,price});
return result;
}
const removeById = async id => {
await products.deleteOne({_id:ObjectId(id)});
}
module.exports = {save, getAll,update,removeById};
这是我使用的API文件.
const {save,getAll,update,removeById} = require ('../dal/products.dao');
const createProduct = async ({name, description,qty,price})=>{
const product = {
name,description,qty,price
}
return await save(product);
}
const getProducts = async () => {
return await getAll();
}
const deleteProduct = async id => {
return await removeById(id);
}
const updateProduct = async (id, {name, description,qty,price})=>{
return await update(id, {name, description, qty, price});
}
module.exports = {
createProduct, getProducts,deleteProduct,updateProduct
}
最后这是我用的路由,
const Router=require("@koa/Router");
const {createProduct, getProducts,deleteProduct,updateProduct } = require('../API/products.api');
const router = new Router({
prefix:'/products'
})
router.get('/',async ctx=>{
ctx.body = await getProducts();
})
router.post('/',async (ctx)=>{
let product = ctx.request.body;
product = await createProduct(product);
ctx.set('Content-type','application.json');
ctx.response.status = 201;
ctx.body = product;
})
router.delete('/:id',async ctx=>{
const id = ctx.params.id;
await deleteProduct(id);
ctx.body = "Item deleted!";
});
router.put('/:id',async ctx=>{
const id = ctx.params.id;
let product = ctx.request.body;
product = await updateProduct(id,product);
ctx.response.status = 200;
ctx.body = product;
});
module.exports = router;
我在index.js年用这个代码建立了连接
const {MongoClient} = require("mongodb");
const client = new MongoClient('mongodb://localhost:27017',{
useNewUrlParser: true,
useUnifiedTOpology: true
});
client.connect(err => {
if(err){
console.error(err);
process.exit(-1);
}
console.log("MongoDB connection success..!");
})
module.exports = client;
App.js如下所示,
const bodyParser = require('koa-bodyparser');
const cors = require('@koa/cors');
const koa = require('koa');
const mongodb = require('./dal/index.js');
const productRoutes = require('./routes/products.routes');
const userRoutes = require ('./routes/users.routes');
const app = new koa();
app.use(bodyParser());
app.use(cors());
app.use(productRoutes.routes()).use(productRoutes.allowedMethods());
app.use(userRoutes.routes()).use(userRoutes.allowedMethods());
const PORT = 3000;
app.listen(PORT,()=>{
console.log("Server is up and running on ", PORT,"...");
});
当我使用postman作为整数传递值时,它将作为整数保存在db中.但当我使用react前端添加数据时,它会自动转换为字符串值.我想把它保持为整数.
我try 使用输入类型作为"Number".但运气不好.
你能帮帮我吗.