FeathersJS Mongoose 模型没有正确地将数据保存到数据库
FeathersJS Mongoose Models Not Properly saving data to database
我的 FeathersJS 应用程序有这个问题。我有一个如下所示的用户 Mongoose 模型。
// users-model.js - A mongoose model
//
// See http://mongoosejs.com/docs/models.html
// for more of what you can do here.
import { Application } from '../declarations';
export default function (app: Application) {
const mongooseClient = app.get('mongooseClient');
const users = new mongooseClient.Schema({
first_name: { type: String, },
last_name: { type: String, },
email: {type: String, unique: true, lowercase: true},
password: { type: String },
dob: {type: Date, },
}, {
timestamps: true
});
return mongooseClient.model('users', users);
}
但是,当我调用我的 api 创建用户时,就像这样。
POST /users?first_name=Patrick& last_name=Lumenus& email=abc@gmail.com& password=ABC123& dob=1991-10-10 HTTP/1.1
Host: localhost:3030
User-Agent: PostmanRuntime/7.18.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 2749d3e8-a7fc-45f8-96ae-0b04a4c51bc0,b1fb4da4-b9e1-4824-917a-5965250d6f9b
Host: localhost:3030
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache
好像只保存生成的ObjectID和时间戳。它不会保存我为新用户传入的数据。这是我创建的数据库中的数据。
{"_id":{"$oid":"5dade949612103041bd7653c"},"createdAt":{"$date":{"$numberLong":"1571678537003"}},"updatedAt":{"$date":{"$numberLong":"1571678537003"}},"__v":{"$numberInt":"0"}}
对我做错了什么有什么建议吗?顺便说一下,这是一个全新的 Feathers 项目。除了上述之外,我没有添加任何挂钩或任何其他附加代码。
好吧,我确实按照建议对 mongoose.ts 文件进行了调整,以使用更新后的引擎。虽然,我只添加了 useUnifiedTopology: true
参数来消除我在应用程序启动时收到的警告。
import mongoose from 'mongoose';
import { Application } from './declarations';
import logger from './logger';
export default function (app: Application) {
mongoose.connect(
app.get('mongodb'),
{ useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true }
).catch(err => {
logger.error(err);
process.exit(1);
});
mongoose.Promise = global.Promise;
app.set('mongooseClient', mongoose);
}
使用 Postman 时,您是否在通过 POST
请求发送数据时使用 x-www-form-urlencoded
?
您是否也尝试过在 post 正文的 raw
选项卡中以 application/json
的形式发送数据?
根据文档 https://docs.feathersjs.com/api/client/rest.html#create 您必须在正文中传递数据,并且它必须是 JSON(不要忘记设置内容类型)
我的 FeathersJS 应用程序有这个问题。我有一个如下所示的用户 Mongoose 模型。
// users-model.js - A mongoose model
//
// See http://mongoosejs.com/docs/models.html
// for more of what you can do here.
import { Application } from '../declarations';
export default function (app: Application) {
const mongooseClient = app.get('mongooseClient');
const users = new mongooseClient.Schema({
first_name: { type: String, },
last_name: { type: String, },
email: {type: String, unique: true, lowercase: true},
password: { type: String },
dob: {type: Date, },
}, {
timestamps: true
});
return mongooseClient.model('users', users);
}
但是,当我调用我的 api 创建用户时,就像这样。
POST /users?first_name=Patrick& last_name=Lumenus& email=abc@gmail.com& password=ABC123& dob=1991-10-10 HTTP/1.1
Host: localhost:3030
User-Agent: PostmanRuntime/7.18.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 2749d3e8-a7fc-45f8-96ae-0b04a4c51bc0,b1fb4da4-b9e1-4824-917a-5965250d6f9b
Host: localhost:3030
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache
好像只保存生成的ObjectID和时间戳。它不会保存我为新用户传入的数据。这是我创建的数据库中的数据。
{"_id":{"$oid":"5dade949612103041bd7653c"},"createdAt":{"$date":{"$numberLong":"1571678537003"}},"updatedAt":{"$date":{"$numberLong":"1571678537003"}},"__v":{"$numberInt":"0"}}
对我做错了什么有什么建议吗?顺便说一下,这是一个全新的 Feathers 项目。除了上述之外,我没有添加任何挂钩或任何其他附加代码。
好吧,我确实按照建议对 mongoose.ts 文件进行了调整,以使用更新后的引擎。虽然,我只添加了 useUnifiedTopology: true
参数来消除我在应用程序启动时收到的警告。
import mongoose from 'mongoose';
import { Application } from './declarations';
import logger from './logger';
export default function (app: Application) {
mongoose.connect(
app.get('mongodb'),
{ useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true }
).catch(err => {
logger.error(err);
process.exit(1);
});
mongoose.Promise = global.Promise;
app.set('mongooseClient', mongoose);
}
使用 Postman 时,您是否在通过 POST
请求发送数据时使用 x-www-form-urlencoded
?
您是否也尝试过在 post 正文的 raw
选项卡中以 application/json
的形式发送数据?
根据文档 https://docs.feathersjs.com/api/client/rest.html#create 您必须在正文中传递数据,并且它必须是 JSON(不要忘记设置内容类型)