Мне очень жаль, если это выходит наивно, но я слишком долго этим занимался.Моя проблема связана с этим неотвеченным вопросом.У меня установлена Keystone 4 , и мне нужно использовать функцию update .Вот модель страны:
'use strict';
const keystone = require('keystone');
const Types = keystone.Field.Types;
/**
* Country Model
* ============
*/
let Country = new keystone.List('Country', {
autokey: { from: 'name', path: 'key', unique: true },
});
Country.add({
name: { type: Types.Text, initial: true, required: true, unique: true },
capital: { type: Types.Relationship, ref: 'State' },
});
// Get country's id
Country.schema.methods.getCountryId = function (name, cb) {
this.model.findOne({ name: name }).select('_id').exec(cb);
};
Country.register();
метод getCountryId () предназначен для того, чтобы я мог указывать идентификаторы в поле отношения при создании обновлений состояния, с моделью, показанной ниже:
'use strict'
;
const keystone = require('keystone');
const Types = keystone.Field.Types;
/**
* State Model
* ============
*/
let State = new keystone.List('State', {
autokey: { from: 'name', path: 'key', unique: true },
});
State.add({
name: { type: Types.Text, initial: true, required: true, unique: true },
capital: { type: Types.Text },
country: { type: Types.Relationship, initial: false, ref: 'Country', many: false, index: true }
});
// Return only a State's _id
State.statics = {
getStateId: function (name, cb) {
this.findOne({ name: name }).select('_id').exec(cb);
}
};
State.register();
Теперьобновления состояния, для краткости:
'use strict';
const keystone = require('keystone');
let Country = keystone.list('Country');
// Get the _id of France
let france = Country.getCountryId('France', function (err, country) {
if (err) {
// handle error, express example:
console.err(err);
}
exports.create = {
State: [
{ name: 'Nouvelle-Aquitaine', capital: 'Bordeaux', country: france },
{ name: 'Auvergne-Rhône-Alpes', capital: 'Lyon', country: france },
],
};
Мой текущий коммит вызывает огромную утечку памяти.Но до этого я продолжал получать Country.getCountryId
это не функция.Я также попробовал концепцию Mongoose Populate , которая, кажется, работает только при использовании одной из функций find*
.Очевидно, я что-то упустил.Пожалуйста, скажите мне, что это такое.