Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 将项目名称添加到keystone.js中的关系字段大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人有一个很好的例子,在keystonejs中为关系字段添加名称?现在它只保存一个id,所以如果我需要在玉器模板中显示那些字段名称,我还需要查询该关系模型.理想情况下是这样的
var keystone = require('keystone'),Types = keystone.Field.Types;

/**
 * titles Model
 * =============
 */

var title = new keystone.List('title');

title.add({
  name: { type: String,required: true,initial: true },room: { type: Types.Relationship,initial: true,ref: 'Screening',addNew: false },businessUnit: { type: Types.Relationship,ref: 'BusinessUnit',addNew: false }
});

title.defaultSort = '-createdAt';
title.defaultcolumns = 'name,room';
title.register();

会像这样保存:

title = {
    name: 'name',room: 3141234123442,businessUnit: {
        name: 'business name',_id: 123412341234
    }
}

如果没有例子,如果有人可以通过最佳实践来指导我做一个自定义关系字段类型来存储关系选择菜单中的值和id,我可能会想出来.该站点每个集合中将@R_775_11262@000个文档,因此我现在需要关注性能和最佳实践.

解决方法

无法使用Keystone进行保存,但您可以将其设置为将对象传递给您的玉石模板.

您只需要根据mongoose / mongodb功能“填充”关系字段.

**所以你的businessUnit模型可能如下所示:

var keystone = require('keystone');
var Types = keystone.Field.Types;

var BusinessUnit = new keystone.List('BusinessUnit',{
    autokey: { from: 'name',path: 'key',unique: true },plural: 'BusinessUnits'
});

BusinessUnit.add({
    name: { type: String,required: true },});   
BusinessUnit.relationship({ ref: 'title',path: 'title',refPath: 'businessUnit' }); 
BusinessUnit.register();

您的标题模型如上

var keystone = require('keystone'),Types = keystone.Field.Types;

var title = new keystone.List('title');

title.add({
  name: { type: String,room';
title.register();

控制器的重要部分可能如下所示

//Get all titles with their nested businessUnits.
view.on('init',function(next) {
  keystone.list('title').model.find()
  .populate('businessUnit')
  .exec(function(err,results) {
    if(err) {
      console.log(err);
      return next(err);
    } else {
      locals.data.titlesWithnestedBusinessUnits = results;
      next(err);
    }
  });
});

作为旁注,根据.populate方法功能,这只能工作一层.如果你想要深入(非常低效)你可以使用mongoose deep populate. https://github.com/buunguyen/mongoose-deep-populate.

大佬总结

以上是大佬教程为你收集整理的node.js – 将项目名称添加到keystone.js中的关系字段全部内容,希望文章能够帮你解决node.js – 将项目名称添加到keystone.js中的关系字段所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。