Comments (6)
I think this PR typically solves this. We are now using smart unmarshal instead of the older code which used to use, unmarshal from db.go
@ElecTwix let me know if this assumption is correct and we should be okay to close this?
from surrealdb.go.
Will close as it looks solved, but @jonsaw (or anyone else) please let us know if it isn't and we can re-open.
from surrealdb.go.
Thanks! We will test this case in the unit/integration tests.
from surrealdb.go.
Hi, I was trying to reproduce this and wrote the following code. From my understanding this is now resolved.
package main
import (
"fmt"
"github.com/surrealdb/surrealdb.go"
)
type User struct {
Name string
ID string
Surname string
}
func main() {
// Connect to SurrealDB
db, err := surrealdb.New("ws://localhost:8000/rpc")
if err != nil {
panic(err)
}
// Select namespace and database
if _, err = db.Use("test", "test"); err != nil {
panic(err)
}
// Create user struct
user := User{
Name: "Salman",
Surname: "Shah",
}
// Insert user
data, err := db.Create("user", user)
if err != nil {
panic(err)
}
fmt.Println("User created", data)
// Unmarshal data
createdUser := make([]User, 1)
err = surrealdb.Unmarshal(data, &createdUser)
if err != nil {
panic(err)
}
fmt.Println("Created user after unmarshal", createdUser)
// Get user by ID
data, err = db.Select(createdUser[0].ID)
if err != nil {
panic(err)
}
// Unmarshal data
selectedUser := new(User)
err = surrealdb.Unmarshal(data, &selectedUser)
if err != nil {
panic(err)
}
fmt.Println("Selected user", selectedUser)
fmt.Println(selectedUser.ID)
// Update user
surrealUser, err := db.Update("user:4ghv324dzhg3chxk4jbs", map[string]string{"name": "Jane"})
if err != nil {
panic(err)
}
var updatedUser User
err = surrealdb.Unmarshal(surrealUser, &updatedUser)
if err != nil {
fmt.Println("Error in unmarshalling", err)
}
// Raw Query user
if _, err = db.Query("SELECT $rowName FROM $record", map[string]interface{}{
"record": createdUser[0].ID,
"rowName": "name",
}); err != nil {
panic(err)
}
fmt.Println("Deleting user by ID", selectedUser)
// Delete user by ID
if _, err = db.Delete(selectedUser.ID); err != nil {
panic(err)
}
}
from surrealdb.go.
Happy to add a test case for this though if it doesn't exist
from surrealdb.go.
I think this PR typically solves this. We are now using smart unmarshal instead of the older code which used to use, unmarshal from
db.go
@ElecTwix let me know if this assumption is correct and we should be okay to close this?
Thanks for your effort.
I couldn't reproduce either like you said I belive it fixed when refactored.
from surrealdb.go.
Related Issues (20)
- Feature: context.Context Support HOT 6
- Documentation: working with record links HOT 4
- Feature: Move and test `unmarshalMapToStruct(data map[string]interface{}, outStruct interface{})` HOT 2
- Bug: Re-connection to the DB HOT 2
- Bug: Broken Tests for Fetch HOT 5
- Bug: Unhandled errors in websockets can lead to panics HOT 4
- Bug: `Question or idea` Button HOT 2
- surrealdb Auth undefined HOT 1
- Bug: unexpected EOF on TestSurrealDBSuite/gorilla/TestUpdate HOT 1
- Documentation: The README file example is not usable with the latest main branch, neither with the latest version HOT 1
- Feature: Replace Gorilla WS with Nhooyr WS HOT 7
- Bug: The session has expired error when connecting to version 1.3.0 HOT 4
- Bug: stack overflow error in gorilla websocket with db version 1.3.0 HOT 4
- Feature: surrealML for golang
- Documentation: Add Documentation for .Live() func & other stuff related to LIVE queries HOT 6
- Change function does not exist HOT 2
- Feature: Add CBOR support HOT 2
- Bug: UnmarshalRaw panics when unmarshalling object HOT 3
- Feature: UPSERT
- Example fails in Beta 11 - panic: sending request failed for method 'change': Method not found HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from surrealdb.go.