Ich bin ziemlich neu auf Nodejs und Segel. Ich implementiere einen Server, der Twitter ähnlich ist. Im Benutzermodell sollte es 2 Felder geben: Follower und Follower, und die 2 Felder sind die Assoziation des Modells 'Benutzer' selbst.Sails.js Modell: create 2 Assoziation zu selbst fehlgeschlagen
Meine Frage ist, wenn das Modell nur 1 Assoziation, entweder Follower oder folgende haben, funktioniert es. Wenn jedoch sowohl Folger als auch Folgender enthalten sind, würde ein Fehler auftreten.
Der Code ist so etwas wie dieses:
module.exports = {
attributes: {
alias: {
type:'string',
required: true,
primaryKey: true
},
pwd: {
type: 'string',
required: true
},
follower: {
collection: 'user',
via: 'alias'
},
following:{
collection: 'user',
via: 'alias'
}
}
Der Code wird ein solcher Fehler verursachen:
usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/references.js:115
throw new Error('Trying to associate a collection attribute to a model tha
^
Error: Trying to associate a collection attribute to a model that doesn't have a Foreign Key. user is trying to reference a foreign key in user
at References.findReference (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/references.js:115:11)
at References.addKeys (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/references.js:72:22)
Wie werden Sie Ihre Modelle in dem Controller-Code bevölkern? Wenn Sie populateAll() nicht verwenden, geben Sie einen Attributnamen für populate() ein? –
@AlexAlksne Ich bevölkere so: 'User.find ({alias: item.alias}). Populate ('Follower'). Exec (console.log);' Eigentlich definiere ich nur 'Following', benutze es auch nie . Dann melden die Segel den Fehler beim Abheben. –
Seltsam, alles scheint korrekt zu sein. Ich bin so ratlos; Es ist nicht viel, aber wenn Sie sich die Zeile anschauen, die den Fehler in references.js verursacht, hat sie folgenden Kommentar: "Wenn keine übereinstimmenden Attribute gefunden werden, geben Sie einen Fehler aus, weil Sie versuchen, ein hasMany-Attribut zu einem Modell hinzuzufügen habe keinen Fremdschlüssel, der der Sammlung entspricht. " –