我有这个错误Unauthorized admin to execute command mongoose + Graphql

0tdrvxhp  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(115)

我使用mongoose和Graphql将查询发送到数据库,但由于某种原因,它不允许我创建文档。我尝试创建一个具有完全管理员权限的新用户,但没有成功。我尝试更改默认用户密码,但没有成功。我重新检查了我的mongoose模型,没有错误,那么可能是什么问题。仅供参考,问题出现在return (author.save())上,数据库连接正常

作者模型

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const authorSchema = new Schema({
    name: String,
    age: Number
});

module.exports = mongoose.model('Author', authorSchema);

字符串

schema.js

const graphql = require('graphql');
const Book = require('../models/book');
const Author = require('../models/Author');
const _ = require('lodash');

const {
    GraphQLObjectType,
    GraphQLString,
    GraphQLSchema,
    GraphQLID,
    GraphQLInt,
    GraphQLList
} = graphql;

const BookType = new GraphQLObjectType({
    name: 'Book',
    fields: ( ) => ({
        id: { type: GraphQLID },
        name: { type: GraphQLString },
        genre: { type: GraphQLString },
        author: {
            type: AuthorType,
            resolve(parent, args){
                //return _.find(authors, { id: parent.authorId });
            }
        }
    })
});

const AuthorType = new GraphQLObjectType({
    name: 'Author',
    fields: ( ) => ({
        id: { type: GraphQLID },
        name: { type: GraphQLString },
        age: { type: GraphQLInt },
        books: {
            type: new GraphQLList(BookType),
            resolve(parent, args){
                //return _.filter(books, { authorId: parent.id });
            }
        }
    })
});

const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
        book: {
            type: BookType,
            args: { id: { type: GraphQLID } },
            resolve(parent, args){
                //return _.find(books, { id: args.id });
            }
        },
        author: {
            type: AuthorType,
            args: { id: { type: GraphQLID } },
            resolve(parent, args){
                //return _.find(authors, { id: args.id });
            }
        },
        books: {
            type: new GraphQLList(BookType),
            resolve(parent, args){
                //return books;
            }
        },
        authors: {
            type: new GraphQLList(AuthorType),
            resolve(parent, args){
                //return authors;
            }
        }
    }
});

const Mutation = new GraphQLObjectType({
    name: 'Mutation',
    fields: {
        addAuthor: {
            type: AuthorType,
            args: {
                name: { type: GraphQLString },
                age: { type: GraphQLInt }
            },
            resolve(parent, args){
                let author = new Author({
                    name: args.name,
                    age: args.age
                });
                return (author.save())
            }
        }
    }
});

module.exports = new GraphQLSchema({
    query: RootQuery,
    mutation: Mutation
})

;

错误信息

(node:31482) MongoError: (Unauthorized) not authorized on admin to execute command { 
insert: "authors", documents: [[{name gyfdgyiszukjfheusdzyih} {age 88} {_id 
ObjectID("60af9c682215ea7afad86f4c")} {__v 0}]], ordered: false, writeConcern: { w:
"majority" }

yc0p9oo0

yc0p9oo01#

在尝试Youtube上的GraphQL教程练习后发现了这个问题。要解决这个问题,您需要将 Mongoose 模型更新到最新版本。

fhity93d

fhity93d2#

只是更新你 Mongoose 到最新版本

npm uninstall mongoose
npm i mongoose

字符串

相关问题