Как я могу очистить этот тип возврата для нео-гоанга?
Эта модель, которую я пытаюсь сделать с помощью неоизма, сейчас работает, но я не могу понять, как сделать возвращаемый тип более коротким и более чистым. Должен быть способ сделать это: []struct { UserId string "json:\"account.UserId\""; FirstName string "json:\"account.firstName\""; LastName string "json:\"account.lastName\"" }
В: []Account
или что-то
package models
import (
"errors"
"strconv"
"time"
// "fmt"
"github.com/jmcvetta/neoism"
)
var (
Accounts map[string]*Account
)
var (
db *neoism.Database
)
func panicErr(err error) {
if err != nil {
panic(err)
}
}
type Account struct {
UserId string `json:"account.UserId"`
FirstName string `json:"account.firstName"`
LastName string `json:"account.lastName"`
}
func init() {
var err error
db, err = neoism.Connect("http://neo4j:password@localhost:7474/db/data")
if err != nil {
panic(err)
}
}
// map[lastName:PATRUS UserId:7f7014f9-bd59-4739-8e1b-5aebfa00f4c5 firstName:LARISSA]
func GetAccounts() []struct { UserId string "json:\"account.UserId\""; FirstName string "json:\"account.firstName\""; LastName string "json:\"account.lastName\"" } {
stmt := `
MATCH (account:Account) RETURN account.UserId, account.firstName, account.lastName
`
res := []struct {
UserId string `json:"account.UserId"`
FirstName string `json:"account.firstName"`
LastName string `json:"account.lastName"`
}{}
// construct query
cq := neoism.CypherQuery{
Statement: stmt,
Result: &res,
}
// execute query
err := db.Cypher(&cq)
panicErr(err)
return res
}
Вот еще одна копия: http://play.golang.org/p/14gzc0a_89
Я новичок и собираюсь уйти от этих примеров для неоизма: https://gist.github.com/verdverm/b43444063995a7f5b913
Примеров много, но verdverm всегда просто выводит, а не возвращает.
У меня также есть контроллер, где я хотел бы вывести JSON.
package controllers
import (
"github.com/astaxie/beego"
"social/models"
)
type AccountsController struct {
beego.Controller
}
func (c *AccountsController) Get() {
c.Data["json"] = models.GetAccounts()
// c.Data["json"] = "hello world"
c.ServeJson()
}
Спасибо за любую помощь / советы для новичка!
2 ответа
package models
import (
"errors"
"strconv"
"time"
// "fmt"
"github.com/jmcvetta/neoism"
)
var (
Accounts map[string]*Account
)
var (
db *neoism.Database
)
func panicErr(err error) {
if err != nil {
panic(err)
}
}
type Account struct {
UserId string `json:"account.UserId"`
FirstName string `json:"account.firstName"`
LastName string `json:"account.lastName"`
}
func init() {
var err error
db, err = neoism.Connect("http://neo4j:password@localhost:7474/db/data")
if err != nil {
panic(err)
}
}
// map[lastName:PATRUS UserId:7f7014f9-bd59-4739-8e1b-5aebfa00f4c5 firstName:LARISSA]
func GetAccounts() []Account {
stmt := `
MATCH (account:Account) RETURN account.UserId, account.firstName, account.lastName
`
var accounts []Account
// construct query
cq := neoism.CypherQuery{
Statement: stmt,
Result: &accounts,
}
// execute query
err := db.Cypher(&cq)
panicErr(err)
return accounts
}
Нужно использовать структуру Account над функцией, а затем создать переменную внутри и использовать указатель на var для ответа neoism db.
Может ли getAccounts вернуть массив указателей аккаунта?
func GetAccounts() []*Account {}