我確實用資料庫改變了一些新的東西..因為我有 5 個 mongodb 專案..這里是代碼這是我的main-model.js
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const mainSchema = new Schema({
likes:{
type:Number,
max:100000
},
people:[{
key:{type:String},
name:{type:String}
}]
},{
timestamps:true
})
const MAIN = mongoose.model('liker-model',mainSchema)
MAIN.insertMany([
{"_id":mongoose.Types.ObjectId(1),likes:0,people:[]},
{"_id":mongoose.Types.ObjectId(2),likes:0,people:[]},
{"_id":mongoose.Types.ObjectId(3),likes:0,people:[]},
{"_id":mongoose.Types.ObjectId(4),likes:0,people:[]},
{"_id":mongoose.Types.ObjectId(5),likes:0,people:[]},
])
module.exports = MAIN
現在我將通過liker.js這將是代碼
const router = require('express').Router()
let Main = require('../models/main-model')
router.route('/').get((req,res) => {
Main.find()
.then(likes => res.json(likes))
.catch(err => console.log(err))
})
router.route('/item/:id').post((req,res) => {
const id = req.params.id
console.log(id)
if (!id) return res.status(400).json({ message: "missing id" });
const { likes, people } = req.body;
Main
.updateOne(
{ _id: id },
{
$addToSet: { people: { $each: people } },
$set: {
likes,
},
},
)
.then((likes) => res.json({ message: "New User Added" }))
.catch((err) => res.status(400).json("Error :" err));
})
module.exports = router
根據您對此
我的意思是,由于我的前端有 5 個照片專案,這意味著我的資料庫中需要 5 個專案,您將在我的main-model.js. 現在,因為我知道如何將我的專案推送到我想要推送的每個專案的陣列中。在您在我的帖子中提到的代碼中
router.route('/item/1').post((req,res) => {
const { likes, people } = req.body
Main.updateOne({likes}, {$addToSet: { people: {$each: people} } } )
.then(likes => res.json('New User Added'))
.catch(err => res.status(400).json('Error :' err))
})
但因為我需要你之前提到的身份證......
router.route("/item/:id").post((req, res) => {
const id = req.params.id;
if (!id) return res.status(400).json({ message: "missing id" });
const { likes, people } = req.body;
const model = mongoose.model("collection_name", mainSchema);
model
.updateOne(
{ _id: id },
{
$addToSet: { people: { $each: people } },
$set: {
likes,
},
},
)
.then((likes) => res.json({ message: "New User Added" }))
.catch((err) => res.status(400).json("Error :" err));
});
但在我的 insertMany() 中,它創建了自己的 ID,因此我必須在前端傳遞它
axios.get('http://localhost:7171/likes')
.then(listid => setlistid(list.data))
.catch(err => console.log(err))
像這樣的東西并將其傳遞回我的后端/資料庫
axios.post('http://localhost:7171/likes/item/listid[0]._id',{ people:{name:name,key:key }})
axios.post('http://localhost:7171/likes/item/listid[1]._id',{ people:{name:name,key:key } })
axios.post('http://localhost:7171/likes/item/listid[2]._id',{ people:{name:name,key:key } })
axios.post('http://localhost:7171/likes/item/listid[3]._id',{ people:{name:name,key:key } })
axios.post('http://localhost:7171/likes/item/listid[4]._id',{ people:{name:name,key:key } })
我已經明白了..但是你知道main-model.js當我試圖重新運行我的 server.js 時,我怎么不能再重新創建另外 5 個專案???
呃,這是我最長的討論,哈哈。
uj5u.com熱心網友回復:
首先,mongodb 不將 id 存盤為整數(如1, 2, 3, 4, 5),而是存盤為 ObjectId
參考:https ://mongoosejs.com/docs/guide.html#_id
其次,如果你想為 collection 插入多個默認值liker-model。您使用的方式是錯誤的,因為每次啟動 nodejs 后端服務器時,代碼都會生成一個新的id。mongoose.Types.ObjectId(1)你應該做類似的事情
const defaultIdLikerModel = [
"00000001a24dfc9b806e607f",
"00000001a24dfc9b806e607d",
"6235f2fea24dfc9b806e6080",
"6235f306a24dfc9b806e6081",
"6235f30aa24dfc9b806e6082",
]; // generate default id to query insert only not exist
const queries = []; // push multiple query insert if not exist
defaultIdLikerModel.forEach((likerId) => {
queries.push(
MAIN.findOneAndUpdate(
{ _id: likerId },
{
$setOnInsert: {
likes: 0,
people: [],
},
},
{
upsert: true,
},
),
);
});
await Promise.all(queries); // execute all queries
第三,在你的路線/item/:id上。如果你需要 main-model.js,因為你被宣告為一個模型const MAIN = mongoose.model('liker-model',mainSchema),你不需要重新宣告const model = mongoose.model("collection_name", mainSchema);。只需使用這樣的東西
const model = require('./main-model')
model.updateOne(
{ _id: id },
{
$addToSet: { people: { $each: people } },
$set: {
likes,
},
},
)
.then((likes) => res.json({ message: "New User Added" }))
.catch((err) => res.status(400).json("Error :" err));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/450017.html
上一篇:Mongoose保留重復元素
下一篇:使用陣列時的NodeJS性能
