【问题标题】:relational schema node.js mongodb关系模式 node.js mongodb
【发布时间】:2021-05-15 16:35:20
【问题描述】:

我正在使用 Node.js 制作一个用于资金管理应用程序的 API。我的用户架构如下:

const userSchema = new mongoose.Schema({
name: {
    type:String,
    required: true
},
email:{
    type: String,
    required: true,
    uniqe:true
},
password:{
    type:String,
    required: true
},

budget:{
    type:String ,
    required: true
},
currency: {
    type: String,
    required: true },

spendings: {
    type: mongoose.Schema.Types.ObjectId,
    ref:'Spendings'},

purchases :{
    type: mongoose.Schema.Types.ObjectId,
    ref:'Purchases'},

debts: {
    type: mongoose.Schema.Types.ObjectId,
    ref:'Debts'} 
});
module.exports = mongoose.model('User', userSchema);

我想要做的是获取所有用户的债务(例如),但我无法弄清楚。我只能使用用户 ID 创建和获取债务。这是我的债务模式:

const debtsSchema = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
debtsName:{
    type:String,
    required:true
},
price:{
    type:Number,
    required:true
},
userID: {
    type: mongoose.Schema.ObjectId,
    ref: 'User',
    required: true
  }

  },
  {timestamps:true}
  );

  module.exports = mongoose.model('Debts', debtsSchema);

授权控制器

exports.getOneUser = (req, res, next) => {
const id = req.params.userID;
User.findById(id).populate('spendings').populate('debts').populate('purchases')
.then(doc => {
    if(doc) {
        console.log("From database", doc);
        res.status(200).json(doc);
    } else {
        res.status(404).json({
            message: "No data is found by provided ID"
        });
    }
})
.catch(err => {
    console.log(err);
    res.status(500).json({
        error: err
    });
})
}

请注意,我是 Node.js 新手并详细解释。提前致谢

【问题讨论】:

    标签: node.js mongodb express mongoose mongoose-schema


    【解决方案1】:

    如果您想获取特定用户的债务数据,请使用 userID 编写债务收集查询。

    Debts.find({userID: id})
    

    如果您想要所有用户数据及其相应的债务数据,

    User.find({}).populate('debts')
    

    【讨论】:

    • 它首先给了我一个错误,说Assignment to constant variable 但我将 userIDid 设置为 var 并且它起作用了!谢谢
    猜你喜欢
    • 2018-07-04
    • 2023-03-04
    • 2019-09-25
    • 2017-10-23
    • 2011-03-02
    • 2012-11-22
    • 1970-01-01
    • 2021-06-20
    • 2023-03-03
    相关资源
    最近更新 更多