大佬教程收集整理的这篇文章主要介绍了node.js – 将项目名称添加到keystone.js中的关系字段,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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个文档,因此我现在需要关注性能和最佳实践.
您只需要根据mongoose / mongodb功能“填充”关系字段.
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,请注明来意。