gpt4 book ai didi

node.js - 来自nodejs的Mongodb连接查询

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:29 25 4
gpt4 key购买 nike

我是 MongoDB 的新手,并尝试将两个查询连接起来并将结果存储在一个模型中。我想在获取客户端任务时从另一个集合中获取客户端名称。

型号:-

const mongoose = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;

const ClientTaskSchema = new mongoose.Schema({
clientId: {
type: Number
},
taskId: {
type: Number
},
clientTaskId: {
type: Number
},
active: {
type: Boolean
}
});

module.exports = mongoose.model('ClientTask', ClientTaskSchema);

Controller :-

module.exports.getClientByTask = function(req, res) {
var query = url.parse(req.url,true).query;
ClientTask.find({taskId: query.taskId}, function(err, clientTask) {
if (err) throw err;
if (!clientTask) {
res.status(200).json({ success: false, message: 'Somthing went wrong. Please contact admin.'});
}
else {
res.status(200).json({ success: true, message: 'Successfull', data: clientTask});
}
});
};

最佳答案

一种选择是传递 clientId 作为引用:

clientId: {
type: mongoose.Schema.Types.ObjectId, ref: 'Client / or whatever your model'
}

然后你就可以使用 Mongoose 的 populate 方法 http://mongoosejs.com/docs/populate.html

ClientTask
.find({ taskId: query.taskId })
.populate('clientId', { name: 1 }).exec(function (err, clientTask) {
if (!clientTask) {
res.status(404).json({ message: 'Client task not found' })
}
// your logic
});

关于node.js - 来自nodejs的Mongodb连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com