![](/img/trans.png)
[英]pushing different ids to array and getting an array if all id's are undefined
[英]Pushing to mongoose array by ID not getting ID
我正在嘗試將訂閱的類對象添加到我的 mongodb,但是,當我將新訂閱的類推送到數據庫時,它無法工作,因為它沒有獲取用戶 _id。
到目前為止,我已經嘗試過這段代碼以及 findone 等其他一些東西
const userSchema = new mongoose.Schema({
email: String,
password: String,
secret: String,
classes: [String]
});
const userModel = mongoose.model("Class", userSchema)
const newClass = req.body.subClass;
const id = req.user.id
userModel.findById(id, function (err, user) {
if (user) {
console.log(user)
db.users.update(
{ _id: id },
{ $push: { classes: newClass } }
)
} else {
console.log(err)
}
})
任何幫助,將不勝感激 :)
我可以建議
const mongoose = require('mongoose');
const ObjectId = mongoose.Types.ObjectId;
userModel.findOneAndUpdate(
{ _id: new ObjectId(id) },
{ $push: { classes: newClass } },
{ upsert: false, new: true }, // upsert looks to find a Message with that id and if it doesn't exist creates the Message if argument is true
);
希望能幫到你
運行此文件節點 index.js 並在此幫助下更改代碼!
// index.js
const mongoose = require('mongoose');
const ObjectId = mongoose.Types.ObjectId;
const mongoDB = 'mongodb://127.0.0.1/test';
mongoose.connect(mongoDB, { useUnifiedTopology: true, useNewUrlParser: true,useFindAndModify: false });
const userSchema = new mongoose.Schema({
email: String,
password: String,
secret: String,
classes: [String]
});
(async function createAndUpdate(){
// create user
const userModel = mongoose.model("Class", userSchema);
const newUser = new userModel({
email: 'user@gmail.com',
password: 'password',
secret: 'secret',
classes: 'classes1'
});
await newUser.save();
// update user
const newClass = 'new-classes2';
const id = newUser._id;
await userModel.findOneAndUpdate(
{ _id: new ObjectId(id) },
{ $push: { classes: newClass } },
{ upsert: false }
);
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.