/ / API repousante que não exibe dados do mongodb - json, node.js, mongodb, rest, express

API restful não exibindo dados de mongodb - json, node.js, mongodb, rest, express

Eu tenho uma API resful muito simples criada apenas para a prática. Mas quando tento usar o URL, por exemplo localhost: 3000 / people apenas exibe uma matriz vazia como esta []. Não há erro no console. Estou usando o pacote rest-node para criar a API. Aqui está o código que eu usei:

Server.js (isso é copiado da mesma para o mesmo do pacote reparador de nó (https://github.com/baugarten/node-restful)

var express = require("express"),
bodyParser = require("body-parser"),
methodOverride = require("method-override"),
morgan = require("morgan"),
restful = require("node-restful"),
mongoose = restful.mongoose;
var app = express();

app.use(morgan("dev"));
app.use(bodyParser.urlencoded({"extended":"true"}));
app.use(bodyParser.json());
app.use(bodyParser.json({type:"application/vnd.api+json"}));
app.use(methodOverride());

mongoose.connect("mongodb://localhost/mydbs");

var people = app.people = restful.model("people", mongoose.Schema({
name: String
}))
.methods(["get", "post", "put", "delete"]);

people.register(app, "/people");

app.listen(3000);
console.log("working");

package.json

{
"name": "app1",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.15.1",
"express": "^4.13.4",
"lodash": "^4.12.0",
"method-override": "^2.3.5",
"mongoose": "^4.4.16",
"morgan": "^1.7.0",
"node-restful": "^0.2.5",
"resourcejs": "^1.2.0"
}
}

e dentro do meu mongodb existem dados no db: nomeado mydbs Collection: people

> show dbs
local  0.000GB
**mydbs  0.000GB**
test   0.000GB

> show collections
people

> db.people.find()
{ "_id" : ObjectId("57343f28f41d55c64cca135b"), "name" : "jackal" }

Agora, quando inicio o servidor e vou http://localhost/people exibe uma matriz vazia []. Mas deve mostrar a entrada em Formato Json algo assim

{
_v: 0,
_id: 123344390dfsjkjsdf,
name: "jackal"
}

Por favor ajude!!! Por favor, me dê a direção certa. obrigado

Respostas:

2 para resposta № 1

restful.model retorna um modelo de Mongoose e, por sua vez, usa o nome do modelo pluralizado como um nome de coleção. Então, no seu caso, people referências de modelo para peoples coleção, que está vazia. Se você quiser usar o algoritmo de nomeação de mangusto corretamente, poderá usar person como o nome do modelo. A coleção de mangustos referenciados será people como você quer que seja.

Atualizar

Algoritmo de nomeação de mangusto

Como exemplo (o mangusto precisa ser instalado):

var utils = require("mongoose/lib/utils");
utils.toCollectionName("people"); // peoples
utils.toCollectionName("person"); // people

1 para resposta № 2

Ok, depois de uma pesquisa, descobri que o problema é comMangusto que retorna a forma pluralizada do nome da coleção "pessoas" como "povos" ou "pessoa" como "pessoas". Esse é o motivo por trás dos dados para não serem exibidos. Então eu apenas forcei a usar a coleção que eu quero assim:

var mongoose = require("mongoose");

var PersonSchema = new mongoose.Schema({
name: {
type: String
}
}, {collection: "person"});

var person = mongoose.model("person", PersonSchema);
module.exports = person;

Então, aqui eu adicionei a linha {collection: "person"} para forçar o uso dessa coleção no meu modelo. Agora posso obter o resultado conforme necessário da coleção exata que desejo.