On Sunday, 23 July 2017 at 17:16:44 UTC, Seb wrote:
On Sunday, 23 July 2017 at 16:37:19 UTC, holo wrote:
On Sunday, 23 July 2017 at 16:27:40 UTC, Mike Parker wrote:
On Sunday, 23 July 2017 at 15:23:25 UTC, holo wrote:
this(auto tmp)
You need to specify a type here instead of using auto.
Thanks for reply i fix it. But right now im getting:
../../.dub/packages/vibe-d-0.7.31/vibe-d/source/vibe/http/server.d(286,33):
Deprecation: alias diet.traits.FilterCallback is deprecated - Use
SafeFilterCallback instead.
source/service/frontpage.d(28,30): Error: template
std.array.byPair cannot deduce function from argument types
!()(MongoCursor!(Bson, Bson, typeof(null))), candidates are:
/usr/include/dlang/dmd/std/array.d(419,6):
std.array.byPair(Key, Value)(Value[Key] aa)
What are you trying to do with byPair?
It's only defined for the MongoCursor:
http://vibed.org/api/vibe.db.mongo.cursor/MongoCursor.byPair
That std.array.byPair shows up means that you are using it for
something else?
source/service/frontpage.d(21,10): Error: function
frontpage.FrontPageAPI.getHome no return exp; or assert(0); at
end of function
I guess you forgot a return here?
Maybe it's easier to post your code again?
I took this code from example:
https://github.com/rejectedsoftware/vibe.d/blob/master/examples/mongodb/source/app.d
And it is looking right now like below:
import vibe.d;
import std.algorithm, std.array;
@path("/api")
interface IFrontPageAPI
{
Json getHome();
}
class FrontPageAPI : IFrontPageAPI
{
this(MongoCollection tmp)
{
collect = tmp;
}
private:
MongoCollection collect;
public:
Json getHome()
{
logInfo("Getting HomePage from DB");
Bson query = Bson(["_id" : Bson("homepage")]);
auto result = collect.find(query);
logInfo("Iterating results...");
foreach (i, doc; result.byPair)
logInfo("Item %d: %s", i, doc.toJson().toString());
logInfo("Sending Json");
return Json(result.map!(a => a.toJson).array);
}
}
When i remove this piece of code:
logInfo("Iterating results...");
foreach (i, doc; result.byPair)
logInfo("Item %d: %s", i, doc.toJson().toString());
everything is working as expecting.
One more question, what it does mean:
return Json(result.map!(a => a.toJson).array);
Why we cant just use something like result.toJson?
When i