无法读取未定义的属性“保存”

时间:2018-10-20 17:53:34

标签: javascript node.js mongoose

我正在将GraphQL与NodeJ和Mongoose一起使用(我猜GraphQL在这里无关紧要)

运行查询时,我收到一条消息,提示无法读取未定义的属性save

      resolve (parent, args) {
        let books
        book.find(
            {
            name: args.name
            }, function (error, result){
                console.log(result.length)
                if (result.length == 0) { 

                    console.log(args.name)
                    books = new book({
                        name: args.name, 
                        genre: args.genre,
                        authorName: args.authorName
                    })    
                    Author.find(
                        {
                        name: args.authorName
                        },
                        function (err, results) {
                            if (results.length == 0) {
                                let author = new Author({ 
                                    name: args.authorName
                                })
                            author.save()
                        }
                        });
                }
            })
                return books.save()
        }

这是我的代码,上面注意两个console.log。第一个console.log的长度为零,第二个console.log的长度为

作者和书也是我要导入的猫鼬模式

const Author = require("../models/author.js")
const book = require("../models/book.js")

出于范围的考虑,我在let books下方声明了resolve (parent, args) {

问题:现在,我在JS方面没有太多经验,所以有人可以帮助我并在这里分享我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

您的问题是book.find函数是异步的。这意味着包含from PIL import ImageGrab import os from PIL import Image path='C:\ProgramData\' player_id='1' player_name='player' _format='PNG' pic_name = player_id + '.' + _format screen = Image.Image screen = Image.new("RGB", (1280, 720), 0) def make_screen_shot(): try: screen = ImageGrab.grab() screen.show() except IOError: return False else: return True def save_pic(): pic_name = player_id + '.' + _format try: screen.save(os.path.join(path, pic_name), _format) except IOError: return False else: return True make_screen_shot() save_pic() 的行将在book.find函数的回调之前执行。设置books变量后,您可以将调用移至回调中的book save。