如何在 Mongoose 中使用 MixedId 字段和另一个字段作为 ObjectId 的连接
Posted
技术标签:
【中文标题】如何在 Mongoose 中使用 MixedId 字段和另一个字段作为 ObjectId 的连接【英文标题】:How to use join with MixedId field and another field as ObjectId in Mongoose 【发布时间】:2016-06-30 16:31:50 【问题描述】:我正在为 2 个模式使用连接,如下所示:-
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var CompanySchema = new Schema(
name: String,
address: String,
address2: String,
url: String,
geoLat: String,
geoLon: String,
telephone: String,
npi:String,
active: Boolean,
tax_id:String,
businessTypeId:[
type: Schema.Types.ObjectId, ref: 'BusinessType'
],
partners:[type :Schema.Types.Mixed, ref:'TradingPartners']
);
module.exports = mongoose.model('Company', CompanySchema);
架构 2:-
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var TradingPartnersSchema = new Schema(
name: String,
id: String,
enrollment_required: Schema.Types.ObjectId,
supported_transactions: Schema.Types.Mixed,
is_enabled: Boolean,
clearinghouse:String,
last_updated:String
);
module.exports = mongoose.model('TradingPartners', TradingPartnersSchema);
现在我在我的控制器中使用以下代码进行连接,这会引发错误:-
exports.findCompanyById = function(req, res)
Company.findById(req.params.id)
.populate('partners')
.exec(function (err, company)
console.log(company);
if(err) return res.send(500, err);
return res.send(204);
);
;
运行服务后出现以下错误。有人可以帮忙吗?
"message":"Cast to ObjectId failed for value \"[object Object]\" at path \"_id\"","name":"CastError","type":"ObjectId","value":"id":"56dfa20249c25b7a3290596e","path":"_id"
【问题讨论】:
根据doc,只有ObjectId
、Number
、String
和Buffer
可用作refs
。
【参考方案1】:
我猜你的 req.params.id 是一个对象控制台日志 req.params.id 并从该对象中查找 id
或
partners:[type :Schema.Types.Mixed, ref:'TradingPartners'] 改为
合作伙伴:[type :Schema.Types.ObjectId, ref:'TradingPartners']
【讨论】:
以上是关于如何在 Mongoose 中使用 MixedId 字段和另一个字段作为 ObjectId 的连接的主要内容,如果未能解决你的问题,请参考以下文章
如何在 typescript 中使用 mongoose 在 mongodb 中插入数据?
如何使用 Mongoose 在 MongoDB 中插入 JSON 数组