Jestem całkiem nowy na Nodejs i żagle. Wdrażam serwer podobny do Twittera. W modelu użytkownika powinny znajdować się 2 pola: follower i następna, a 2 pola to powiązanie samego modelu "user".Sails.js Model: stwórz 2 asocjacje do siebie nieudane
Moje pytanie dotyczy tego, kiedy model ma tylko jedno powiązanie, naśladujące lub następujące po nim, działa. Jednakże, jeśli zarówno obserwujący, jak i następujący dołączony, wystąpiłby błąd.
Kod jest coś takiego:
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'
}
}
Kod spowoduje taki błąd:
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)
Jak się zapełniać swoje modele w kodzie kontrolera? Jeśli nie używasz funkcji populateAll(), podajesz nazwę atrybutu do wypełnienia()? –
@AlexAlksne I zapełnić w następujący sposób: 'User.find ({alias: item.alias}) .upulate ('follower'). Exec (console.log);" Właściwie to po prostu zdefiniuję "follow", nawet nigdy go nie używaj . Następnie żagle zgłaszają błąd podczas podnoszenia. –
Dziwne, wszystko wydaje się poprawne. Jestem tak zaskoczony; to niewiele, ale jeśli spojrzysz na wiersz, który powoduje błąd w pliku references.js, zawiera następujący komentarz: "Jeśli nie znaleziono pasujących atrybutów, wyślij błąd, ponieważ próbujesz dodać atrybut hasMany do modelu, do którego przypisane jest powiązanie. nie ma obcego klucza pasującego do kolekcji. " –