我试图从关系中获取价值,就像 bookSchema. Producer= ProducerSchema.id 一样,所以,我将从 ProducerSchema.nameProducer 获取值是字符串。我可以从两者中获得价值,但不知道如何建立关系。如果我使用 mysql 或 MS SQL,可能会更容易,但我是 MongoDB 的新手。
这是我的代码。
const bookSchema= new db.Schema({
id:Number,
nameBook:String,
prices:Number,
region:Boolean,
producer: {
type: db.Schema.Types.ObjectId,
ref: 'producerS',
},
moTA:String,
urlImages:String
},{versionKey:false});
const ProducerSchema = new db.bookSchema({
id: Number,
nameProducer: String
},{versionKey:false});
const producerS= db.model('produceRs', ProducerSchema );
const bookS =db.model('booKs',bookSchema);
const listBook=async()=>{
try{
const list = await bookS.find({}).populate('producer');;
return list;
}catch(error){
throw error;
}
}
和产值
<% sachs.forEach(s => { %>
<tr>
<th><%= s.id %></th> //worked
<td><%= s.nameBook%></td> //worked
<td><%= s.prices%></td> //work
<td><%= s.producer%></td> //not worked <!-- im also use s.producer.nameProducer but its ping not define -->
<td><%= s.region== 1 ? "A" : "B" %></td>
</tr>
<% }) %>
抱歉我的英语不好。
我尝试了一些解决方案,但似乎根本不起作用。
我假设您在从图书架构中查询图书时想要获取生产者的名称。如果是这种情况,您可以在字段中添加
ref
值。 ref value
应该是从模型导出的名称。
const Producer= db.model('Producer', ProducerSchema );
module.exports = Producer
请检查导出名称
const bookSchema= new db.Schema({
id:Number,
nameBook:String,
prices:Number,
region:Boolean,
producer: {
type: db.Schema.Types.ObjectId,
ref: 'Producer',
},
moTA:String,
urlImages:String
},{versionKey:false});
现在要获取生产者的名称,您可以使用填充查询。
在某些情况下,您需要在顶部导入模型才能填充才能工作,具体取决于所使用的 mongoose/mongo 版本。